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);
}