在php中如何在insert中执行select语句
我在PostgreSQL中使用PHP的web应用程序。您看到的第一个查询工作正常。第二个查询不起作用,并导致页面上出现一些小的视觉问题,例如无法加载图像 如果我将SELECT语句替换为一个数字,如1,页面将正确加载,就像正常加载一样。图像也将正确加载 我确实测试了$userID和$newJarName变量,发现它们是正确的,但作为一种保护措施,我还用静态数字和名称替换了它们,并发现仍然存在问题页面 我尝试将select语句放入它自己的变量中,将整个查询放入它自己的变量中,但这两种想法都不起作用 我想我的语句中的语法肯定有问题,但我说不出来。我确实访问了这个页面,但运气不好在php中如何在insert中执行select语句,php,postgresql,heroku,insert,Php,Postgresql,Heroku,Insert,我在PostgreSQL中使用PHP的web应用程序。您看到的第一个查询工作正常。第二个查询不起作用,并导致页面上出现一些小的视觉问题,例如无法加载图像 如果我将SELECT语句替换为一个数字,如1,页面将正确加载,就像正常加载一样。图像也将正确加载 我确实测试了$userID和$newJarName变量,发现它们是正确的,但作为一种保护措施,我还用静态数字和名称替换了它们,并发现仍然存在问题页面 我尝试将select语句放入它自己的变量中,将整个查询放入它自己的变量中,但这两种想法都不起作用
如果要使用参数,则需要使用准备好的语句。 这两个查询都容易受到sql注入的影响 有了PDO,它看起来就像这样: $sth=$dbh->prepare' 插入用户\u jars用户\u id,jar\u id 值?,从jar中选择jar\U id,其中jar\U所有者\U id=?和jar_name=? '; $sth->executearray$userID,$userID,$newJarName;
我不知道你的$db是什么类型的,所以我只是猜测…谢谢你指出这一点,我完全忘记了。但我想这并没有解决你的问题。。。您可能希望添加有关查询的更多信息,但这些信息对您不起作用。您从postgress获得的错误消息会有所帮助。也可能是所使用的两个表的模式。今天晚些时候我将有机会处理它,希望一个准备好的语句能够修复它。如果没有,我会更新这些额外的细节。
function insertNewJar($newJarName, $userID, $db){
$db->query(
"INSERT into jars (jar_owner_id, jar_total, jar_active, jar_name)
VALUES (
'$userID',
0,
true,
'$newJarName')"
);
//linkJar($newJarName, $userID, $db);
//$select = "(SELECT jar_id FROM jars WHERE jar_owner_id = '$userID' AND jar_name = '$newJarName')";
$db->query(
"INSERT INTO users_jars (user_id, jar_id)
VALUES(
'$userID',
(SELECT jar_id FROM jars WHERE jar_owner_id = $userID AND jar_name = '$newJarName')
)"
);
}