Php 子查询在第二次插入时返回超过1行
我有两张桌子: 特布卢瑟:Php 子查询在第二次插入时返回超过1行,php,html,insert,phpmyadmin,Php,Html,Insert,Phpmyadmin,我有两张桌子: 特布卢瑟: +------+-----------+ | id | Name | +------+-----------+ tblItems(此表根据用户选择的数量接受多个复选框值): name\u id将在tblUser中获取id的值 我使用此代码获取tblUser到name\u id的id值: for ($i=0; $i<sizeof($checkbox);$i++){ $sql2="INSERT INTO tbl_trainings VALUE
+------+-----------+
| id | Name |
+------+-----------+
tblItems(此表根据用户选择的数量接受多个复选框值):
name\u id
将在tblUser
中获取id的值我使用此代码获取
tblUser
到name\u id
的id值:
for ($i=0; $i<sizeof($checkbox);$i++){
$sql2="INSERT INTO tbl_trainings VALUES (NULL, '".$checkbox[$i]."', (SELECT id FROM tbl_info))";
$result2=mysql_query($sql2);
}
但是在下一个或第二个中插入数据将是一个错误。错误是
子查询从mysql_error()返回超过1行代码>
顺便说一下,这是完整的代码:
if($_POST["Submit"]=="Submit"){
$sql1="INSERT INTO tblUser VALUES (NULL, '$fname', '$lname')";
$result1=mysql_query($sql1);
for ($i=0; $i<sizeof($checkbox);$i++){
$sql2="INSERT INTO tblItems VALUES (NULL, '".$checkbox[$i]."', (SELECT id FROM tblUser))";
$result2=mysql_query($sql2);
}
}
if($result2 && result1){
echo"<center>";
echo"<h1>";
echo "SUCCESSFUL!";
echo"</h1>";
echo"</center>";
}
else {
echo "ERROR". mysql_error();
}
任何帮助都将不胜感激。
提前谢谢
SELECT id FROM tblUser
返回表中的所有ID
您需要改用mysql last_insert_id:
$sql1="INSERT INTO tblUser VALUES (NULL, '$fname', '$lname')";
$result1=mysql_query($sql1);
$user_id = mysql_insert_id();
for ($i=0; $i<sizeof($checkbox);$i++){
$sql2="INSERT INTO tblItems VALUES (NULL, '".$checkbox[$i]."', $user_id)";
$result2=mysql_query($sql2);
}
$sql1=“插入到tblUser值中(NULL,$fname',$lname”);
$result1=mysql\u查询($sql1);
$user_id=mysql_insert_id();
对于($i=0;$i安全原因,您应该使用准备好的语句
SELECT id FROM tblUser需要一个where子句告诉您要选择的用户。对不起,我已经修改了帖子。几乎就在那里了……但是发生的事情是名称\u id是:1 1 2 3 4 5,第二次插入将是1 1 2 3 4 6 7(已订购)您询问的是输入还是输出?第一个输入生成一个唯一的id,如果sql2input,则所有后续插入的id都相同。信息id必须为1 1 2 3 3。如果第一次选中2复选框,则第二次插入时将为1 1,如果选中3复选框,则为1 2 2 2。
+------+-----------+---------------+
| id | items | name_id |
+------+-----------+---------------+
| 1 | Bucket | 1 |
+------+-----------+---------------+
| 2 | Tree | 1 |
+------+-----------+---------------+
| 3 | House | 1 |
+------+-----------+---------------+
| 4 | Tree | 2 |
+------+-----------+---------------+
| 5 | Air plane | 2 |
+------+-----------+---------------+
| 6 | Bucket | 3 |
+------+-----------+---------------+
SELECT id FROM tblUser
$sql1="INSERT INTO tblUser VALUES (NULL, '$fname', '$lname')";
$result1=mysql_query($sql1);
$user_id = mysql_insert_id();
for ($i=0; $i<sizeof($checkbox);$i++){
$sql2="INSERT INTO tblItems VALUES (NULL, '".$checkbox[$i]."', $user_id)";
$result2=mysql_query($sql2);
}