如何在php中使用几个SQL SELECT查询作为WHERE子句?

如何在php中使用几个SQL SELECT查询作为WHERE子句?,php,sql,phpmyadmin,Php,Sql,Phpmyadmin,谢谢您的时间。稍微格式化一下会有很大帮助: $sql = "INSERT into x (y,z,t) VALUES ((SELECT userID FROM users WHERE username ='".$usersql."')," ."'"."(SELECT itemID from items WHERE category ='".$category."')," ."'".$amountdays."')"; 稍加格式化将大有帮助: $sql = "INSERT into x (y,z

谢谢您的时间。

稍微格式化一下会有很大帮助:

$sql = "INSERT into x (y,z,t) 
VALUES ((SELECT userID FROM users WHERE username ='".$usersql."'),"
."'"."(SELECT itemID from items WHERE category ='".$category."'),"
."'".$amountdays."')";

稍加格式化将大有帮助:

$sql = "INSERT into x (y,z,t) 
VALUES ((SELECT userID FROM users WHERE username ='".$usersql."'),"
."'"."(SELECT itemID from items WHERE category ='".$category."'),"
."'".$amountdays."')";

您应该在准备好的语句中使用PDO或mysqli。然后,您可以为您的值定义变量,并在查询后设置它们。这使得它更具可读性,并且可以防止在代码中注入sql


差不多吧

您应该在准备好的语句中使用PDO或mysqli。然后,您可以为您的值定义变量,并在查询后设置它们。这使得它更具可读性,并且可以防止在代码中注入sql


差不多吧

可能是.。请从项中选择项ID。。。应该是。请从items中选择itemID…但是,如果两个子查询中的任何一个子查询返回多行,则查询将失败。只需调试$sql变量并直接在db上运行结果,以查看错误。实际上,首先在db上创建一个工作查询,然后确保您的$sql生成相同的值,。。从items中选择itemID。。。应该是。请从items中选择itemID…但是,如果两个子查询中的任何一个子查询返回多行,则查询将失败。只需调试$sql变量并直接在db上运行结果,以查看错误。实际上,首先在db上创建一个工作查询,然后确保您的$sql生成相同的值
$stmt = $dbh->prepare("INSERT into x (y,z,t) 
VALUES (
    SELECT userID FROM users WHERE username = :username, 
    SELECT itemID FROM items WHERE category = :category, 
    :amountdays
)";

$stmt->bindParam(':username', $username);
$stmt->bindParam(':category', $category);
$stmt->bindParam(':amountdays', $amountdays);