执行2个mysql查询,第二个基于第一个查询

时间:2015-10-21 10:56:22

标签: php mysql prepared-statement

您好我需要插入两张桌子。

问题是第一个表有一个自动生成的ID字段,我在第二个查询中需要这个字段

成员(表1):

| ID |名称| eyeColour |

assignedMembers(表2):

| ID | MEMBERID |组ID |

我目前正在使用以下内容:

$addMember = $dbHandle->prepare("INSERT INTO members(name,date)     VALUES(?,?)");
$addMember->bind_param("ss",$name,$eyeColour);
$addMember->execute();

$getID = $dbHandle->("SELECT id from members where name = ? LIMIT 1");
$getID->bind_param("s",$name);
$getID->execute();
$getID->bind_param($MID);

$assignMember= $dbHandle->prepare("INSERT INTO assignedMembers memberID,groupID) VALUES(?,4)");
$assignMember->bind_param("i",$MID);
$assignMember->execute();

$ assignMember-> bind_param();在排除故障后,我注意到$ MID变量是空的。

似乎第一个INSERT中的行没有在执行下一个语句之前添加,是否有办法强制执行此操作?

感谢您抽出宝贵时间阅读本文,非常感谢任何帮助

3 个答案:

答案 0 :(得分:2)

mysqli:$insert_id正是您要找的。

$addMember = $dbHandle->prepare("INSERT INTO members(name,date)     VALUES(?,?)");
$addMember->bind_param("ss",$name,$eyeColour);
$addMember->execute();

$id = $dbHandle->insert_id;

答案 1 :(得分:0)

我认为你应该使用

$getID->bind_result($MID);
$getID->fetch();

而不是

$getID->bind_param($MID);

答案 2 :(得分:0)

由于使用了' ...-> bind_param'我假设你使用MySQLi。 查看:mysqli_insert_id — Get the ID generated in the last query