gpt4 book ai didi

php - PDO 查询不显示结果?

转载 作者:可可西里 更新时间:2023-10-31 22:53:43 25 4
gpt4 key购买 nike

好吧,我是 PDO 语句的新手,所以我不确定我是否犯了语法错误或诸如此类的错误。 php 文件没有显示任何错误:

<?php
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'];
}
?>

我的目标是使用 bootstraps datepicker 提取一个项目,但出于此测试的目的,我使用的是 itemName。php 文件出现空白?

我已经检查了字段名称、db_config,但不确定问题出在哪里。

如果我的陈述有误或任何看似错误的地方,请告诉我。

最佳答案

首先,您使用的是 MySQL reserved word , 是 order 需要特别注意;主要使用它周围的刻度。

然后因为我们正在处理一个字符串,$itemName 需要用引号引起来。

<?php
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

  • 阅读 near 'order 它从“order”开始。

现在,如果您的查询应该包含 MySQL 会提示的任何字符,例如引号等,那么您将需要转义您的查询并使用准备好的语句。

例如,如果使用:

$itemName = "Timmy's Sour Dough";

将转化为

WHERE itemName = 'Timmy's Sour Dough' 

依次抛出语法错误。

因此,最好立即转义任何数据。

编辑

您对 preparenew to PDO 的使用共同表明您已经在尝试使用准备好的语句,只是方法不对。你离一份准备充分的陈述只差一点点。您的代码中的一种正确方法是

  $sql = "SELECT * FROM `order` WHERE itemName = ? "; 
$stmt = $conn->prepare($sql);
$stmt->execute(array($itemName));

请注意我们如何在您的查询中包含 ? 然后我们在您的 execute 调用中为它发送一个值。给你:)

关于php - PDO 查询不显示结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com