我的php代码:
for($i=0;$i<num_rows($sql);$i++)
if(isset($_POST['knight'.$i]))
{
$data=
[
$pm_id=$_POST['pm_id'.$i],
$knight_id=$_POST['knight'.$i],
];
mysql_query("update `project_waiting` set `chosen`=(b'1') where `pm_id`='$pm_id' and `knight_id`='$knight_id';");
mysql_query("insert into `project_working`(`pm_id`,`knight_id`) values('$pm_id','$knight_id');");
}
当我使用echo而不是mysql_query时,它返回:
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_1' and `knight_id`='K1';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_1','K1');
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_1' and `knight_id`='K2';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_1','K2');
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_1' and `knight_id`='K3';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_1','K3');
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_1' and `knight_id`='K4';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_1','K4');
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_2' and `knight_id`='K1';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_2','K1');
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_2' and `knight_id`='K4';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_2','K4');
update `project_waiting` set `chosen`=(b'1') where `pm_id`='P1_3' and `knight_id`='K2';
insert into `project_working`(`pm_id`,`knight_id`) values('P1_3','K2');
它在我的phpmyadmin上运行得很好,但是当我将echo更改为mysql_query时,它只影响5行(两个表)
P1_1-K1
P1_1-K4
P1_1-K3
P1_1-K2
P12-K1
我的完整数据库
-- phpMyAdmin SQL Dump
--版本4.3.11
--主机:127.0.0.1--生成时间:2015年7月23日下午12:16--服务器版本:5.6.24--PHP版本:5.6.8
设置SQL_MODE=“no_auto_value_on_zero”;设置time_zone=“+00:00”;
--
创建数据库(如果不存在)knightit
默认字符集utf8整理utf8_unicode_ci;使用knightit
;
--
删除表(如果存在admin
);如果不存在则创建表admin
(id
varchar(16)COLLATE utf8_unicode_ci不为空,password
binary(60)不为空,level
int(2)不为空)engine=innoDB DEFAULT charset=utf8 COLLATE=utf8_unicode_ci;
--
如果存在雇主
,则删除表;如果不存在则创建表empores
(emp_id
varchar(16)COLLATE utf8_unicode_ci NOT NULL默认''、password
longtext COLLATE utf8_unicode_ci NOT NULL、email
varchar(32)COLLATE utf8_unicode_ci NOT NULL、emp_name
text COLLATE
--
如果存在骑士
则删除表;如果不存在则创建表knights
(knight_id
varchar(16)整理utf8_unicode_ci不为空,password
longtext整理utf8_unicode_ci不为空,knight_name
text整理utf8_unicode_ci,email
varchar(32)整理utf8_unicode_ci,s_id
varchar(16)整理utf8_unicode_ci不为空
--
如果存在消息
,则删除表;如果不存在则创建表消息
(m_id
varchar(16)COLLATE utf8_unicode_ci不为空,内容
文本COLLATE utf8_unicode_ci不为空,send_date
date不为空)engine=innoDB DEFAULT charset=utf8 COLLATE=utf8_unicode_ci;
--
如果存在message_send
,则删除表;如果不存在则创建表message_send
(m_id
varchar(16)COLLATE utf8_unicode_ci不为NULL,receiver_id
varchar(16)COLLATE utf8_unicode_ci不为NULL,status
位(1)不为NULL默认值b'0')engine=innoDB DEFAULT charset=utf8 COLLATE=utf8_unicode_ci;
--
如果存在项目
,则删除表;如果不存在项目
则创建表(pro_id
varchar(16)COLLATE utf8_unicode_ci不为空,pro_name
text COLLATE utf8_unicode_ci不为空,emp_id
varchar(16)COLLATE utf8_unicode_ci不为空,p_descripe
text COLLATE utf8_unicode_ci不为空,p_descripe
text COLLATE
--
如果存在project_milestone
,则删除表;如果不存在则创建表project_milestone
(pm_id
varchar(16)COLLATE utf8_unicode_ci不为空,pro_id
varchar(16)COLLATE utf8_unicode_ci不为空,milestone
int(2)不为空,job
text COLLATE utf8_unicode_ci,deadline
int(3)默认为空,knight_amt
int(2)默认
--
如果存在project_waiting
,则删除表;如果不存在则创建表project_waiting
(pm_id
varchar(16)COLLATE utf8_unicode_ci不为NULL,knight_id
varchar(16)COLLATE utf8_unicode_ci不为NULL,chelect
位(1)不为NULL默认b'0')engine=innoDB默认charset=utf8 COLLATE=utf8_unicode_ci;
--
如果存在project_working
,则删除表;如果不存在则创建表project_working
(pm_id
varchar(16)COLLATE utf8_unicode_ci不为空,knight_id
varchar(16)COLLATE utf8_unicode_ci不为空,submit
date默认为空,approval
tinyint(1)默认为空,pay
tinyint(1)默认为空,pay
int(32)默认为空)
--
删除表(如果存在security
);如果不存在则创建表security
(name
varchar(100)COLLATE utf8_unicode_ci不为空,value
longtext COLLATE utf8_unicode_ci不为空)engine=innoDB DEFAULT charset=utf8 COLLATE=utf8_unicode_ci;
--
如果存在技能
,则删除表;如果不存在则创建表skills
(s_id
varchar(16)COLLATE utf8_unicode_ci不为空,skill_name
text COLLATE utf8_unicode_ci不为空)engine=innoDB DEFAULT charset=utf8 COLLATE=utf8_unicode_ci;
--
--
ALTER TABLEADMIN
添加主键(ID
);
--
ALTER TABLE雇主
添加主键(emp_id
);
--
ALTER TABLEknights
添加主键(knight_id
),添加键s_id
(s_id
);
--
ALTER TABLE消息
添加主键(M_ID
);
--
ALTER TABLEMESSAGE_SEND
ADD KEYM_ID
(M_ID
);
--
ALTER TABLEprojects
添加主键(pro_id
)、添加键emp_id
(emp_id
)、添加键s_id
(s_id
);
--
ALTER TABLEproject_milestone
添加主键(pm_id
),添加键pm_id
(pm_id
,pro_id
,milestone
),添加键project_milestone_ibfk_1
(pro_id
);
--
ALTER TABLEproject_waiting
添加主键(knight_id
,pm_id
)、添加键knight_id
(knight_id
)、添加键pm_id
(pm_id
);
--
ALTER TABLEproject_working
添加主键(pm_id
,knight_id
)、添加键pm_id
(pm_id
,knight_id
)、添加键knight_id
(knight_id
);
--
ALTER TABLEsecurity
添加主键(name
);
--
ALTER TABLE技巧
添加主键(S_ID
);
--
--
更改表knights
添加约束knights_ibfk_1
外键(s_id
)引用skills
(s_id
)时删除级联时更新级联;
--
ALTER TABLEMESSAGE_SEND
添加约束MESSAGE_SEND_IBFK_1
外键(M_ID
)引用更新级联上的DELETE级联上的消息
(M_ID
);
--
更改表projects
添加约束projects_ibfk_1
外键(emp_id
)引用在更新级联的删除级联上的雇主
(emp_id
),添加约束projects_ibfk_2
外键(s_id
)引用在更新级联的删除级联上的技能(s_id
);
--
ALTER TABLEproject_milestone
添加约束project_milestone_ibfk_1
外键(pro_id
)引用项目
(pro_id
);
--
ALTER TABLEPROJECT_WAITING
添加约束PROJECT_WAITING_IBFK_1
外键(PM_ID
)引用更新级联上的DELETE级联上的PROJECT_WAITING_IBFK_
(PM_ID
),添加约束PROJECT_WAITING_IBFK_2
外键(Knight_ID
)引用更新级联上的DELETE级联上的Knights
(
--
ALTER TABLE
PROJECT_WORKING
添加约束PROJECT_WORKING_IBFK_1
外键(PM_ID
)引用更新级联上的DELETE级联上的PROJECT_WORKING_IBFK_2
外键(KNIGHT_ID
)引用更新级联上的DELETE级联上的KNIGHT
(KNIGHT_ID
);
我已经通过将所有查询组合到一个查询中来解决了这个问题:
insert into `project_working`(`pm_id`,`knight_id`) values('P1_1','K1'),('valueX','valueY');
update set `chosen`=true where (`pm_id`='P1_3' and `knight_id`='K2') or (`pm_id`='P1_1' and `knight_id`='K1') or(...);
我想向数据库表中添加一行,但如果存在具有相同唯一键的行,我想更新该行。 我的问题是: 但是,它将继续插入新的记录。假设是唯一键。如果存在,则不会将新记录插入数据库;同时更新记录。 我也试过这个: 我不确定我的代码是否存在for循环问题。 我使用for循环插入所有数据。 这是echo$query的输出; SQL表
问题内容: 我有一张桌子Cars and CarDescriptions cars:IDCar(int,PK,autoincrement)carsDesciptions(IDDescription,Header(nvarchar),Content(nvarchar),idCar(int,FK) 在应用程序中,我正在添加汽车并编辑现有汽车。 我的问题: 1.如何在数据库中保存更改后的带有描述的Car
问题内容: 有没有办法像在MySQL服务器上那样批量执行查询? 将无法使用,因为如果该字段已经存在,它将直接忽略该字段并且不插入任何内容。 将无法工作,因为如果该字段已经存在,它将首先对其进行处理,然后再次进行处理,而不是对其进行更新。 可以使用,但不能批量使用。 因此,我想知道是否可以批量发出这样的命令(一次不止一次发送)。 问题答案: 您 可以 使用INSERT … ON DUPLICATE
问题内容: 我有一个产品对象,它属于某些类别,即经典的多对一关系。 我想插入和更新产品而不预先选择类别。像这样: 要么 是否可以在不选择类别的情况下进行更新和插入?我不想为此使用HQL或直接查询。 问题答案: session.load()专门用于此类情况。以下: 不会打数据库。但是,如果没有提供给定ID的类别,它将在稍后阶段(刷新期间或多或少)引发异常。 使用速度快且没有副作用(级联等)。
我已经开始在Android上使用Realm了。到目前为止,我很喜欢它,但我在试图理解如何正确使用“copyToRealmOrUpdate”时遇到了一些问题。 每次打开应用程序时,我都会收到一个带有X“contacts”的JSON(我正在将它映射到Contact RealmObject数组中),如果它们不存在,我想将它们插入Realm DB,或者在它们存在时更新它们。 这里的问题是,每次我这样做时,
问题内容: 我正在尝试在两个SQL Server 2008表之间移动一些数据。如果该记录存在于表2中,并且带有来自表1的电子邮件,则使用来自表1的数据更新该记录,否则插入新记录。 在表1中,我有许多列;名字,姓氏,电子邮件等。 我不确定如何构造查询以更新Table2(如果来自Table1的电子邮件存在)或插入新行(如果Table2中不存在来自Table1的电子邮件)。 我尝试在Google上进