使用变量时PHP中的查询不工作[已关闭]

i1icjdpr  于 2022-11-28  发布在  PHP
关注(0)|答案(3)|浏览(151)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

4天前关闭。
Improve this question
此查询可以正常工作:$query = "SELECT * from hired WHERE username = 'kaas' and dvd = 'dvd 2'";
但随后我将其更改为以下查询:$query = "SELECT * from hired WHERE username = " . $_SESSION['name'] . " AND dvd = " . $_POST['dvd'];
并且它不起作用,即使值应该与上面的查询相同。它直接返回我的错误消息,* 您的SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,了解在第1行“2”附近使用的正确语法 *
DVD的名字是“dvd 1”“dvd 2”“dvd 3”。为什么它不工作?我的查询有什么问题吗?
我试着用查询来记录数据,而不是使用session和post,结果和我预期的一样,显示了一个echo。

a9wyjsp7

a9wyjsp71#

1.未将字符串值括在引号中
1.出于安全原因,必须使用预处理语句(SQL注入和转义无效值

$query = "SELECT * from hired WHERE username = :name AND dvd = :dvd";

$statement = $pdo->prepare($query);

$statement->execute([':name' => $_SESSION['name'], ':dvd' => $_POST['dvd']]);
$result = $statement->fetchAll();
tkclm6bt

tkclm6bt2#

它必须是

$query = "SELECT * from hired WHERE username = '" . $_SESSION['name'] . "'" . "AND dvd = '" . $_POST['dvd'] . "'";

我忘了在它们周围放一个',所以它会看到它(例如)为'username = Fal'而不是'username = 'Fal'

whitzsjs

whitzsjs3#

您必须正确地连接查询中变量请尝试此操作,它将起作用

$query = "SELECT * from hired WHERE username = '" . $_SESSION['name'] . "' AND dvd = '".$_POST['dvd']."'";

相关问题