首先,你使用的是
MySQL reserved word,是订单,需要特别注意;主要是用它周围的蜱虫.
然后,因为我们正在处理字符串,所以$itemName需要用引号括起来.
include('db_config.php');
$itemName = 'Item1';
$sql = "SELECT * FROM `order` WHERE itemName = '$itemName';";
$stmt = $conn->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo $row['itemName'];
}
?>
>使用表名周围的刻度,或将其重命名为“orders”,它不是保留的关键字.
“The php file does not show any errors:”
那是因为你没有检查它们.
添加$conn-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);在连接打开后立即.
根据您在包含MySQL错误的问题下留下的评论:
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘order
>在’订单开始于’订单’附近阅读它.
现在,如果您的查询应该包含MySQL将抱怨的任何字符,例如引用等,那么您将需要转义查询并使用预准备语句.
例如,如果使用:
$itemName = "Timmy's Sour Dough";
会翻译成
WHERE itemName = 'Timmy's Sour Dough'
反过来抛出语法错误.
因此,最好立即立即逃避任何数据.
编辑
您对PDO的准备和新用语的统称表明您已经尝试使用预处理语句,而不是正确的方法.你只是准备好了一些声明.代码中的一种正确方法是
$sql = "SELECT * FROM `order` WHERE itemName = ? ";
$stmt = $conn->prepare($sql);
$stmt->execute(array($itemName));
请注意我们是如何拥有的?在您的查询中,我们将在您的执行调用中为它发送一个值.你去:)