Php PDO查询不显示结果?
好的,我是PDO语句的新手,所以我不确定我是否犯了语法错误或诸如此类的错误。php文件未显示任何错误:Php PDO查询不显示结果?,php,pdo,Php,Pdo,好的,我是PDO语句的新手,所以我不确定我是否犯了语法错误或诸如此类的错误。php文件未显示任何错误: <?php include('db_config.php'); $itemName = 'Item1'; $sql = "SELECT * FROM order WHERE itemName = $itemName;"; $stmt = $conn->prepare($sql); $stmt->execute(); whil
<?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,不确定问题来自何处
请让我知道我的陈述中是否有错误或任何看似错误的地方。你完全忽略了人们使用PDO的主要原因。准备好的语句是您应该使用的语句,这将使您的查询如下所示:
$itemName = 'Item1';
$sql = "SELECT * FROM order WHERE itemName = ?";
$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $item, PDO::PARAM_STR);
$stmt->execute();
仔细阅读
以后,在脚本开头使用以下命令打开错误报告:
ini_set('display_errors', 1);
error_reporting(E_ALL);
这将为您节省大量时间。您的sql语句中似乎有错误。由于itemName是数据库中的varchar或text,因此需要将其放在查询中的单引号中:
$sql = "SELECT * FROM order WHERE itemName = '$itemName';";
首先,您使用的是一个,beingorder
,需要特别注意;主要是在它周围使用蜱虫
因为我们处理的是字符串,$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'];
}
?>
会转化为
WHERE itemName = 'Timmy's Sour Dough'
反过来抛出一个语法错误
因此,最好立即转义任何数据
编辑
您使用的prepare
和PDO新增的
共同表明您已经在尝试使用prepared语句,只是方式不正确。你离一份准备充分的声明还有一点距离。代码中的一种正确方法是
$sql = "SELECT * FROM `order` WHERE itemName = ? ";
$stmt = $conn->prepare($sql);
$stmt->execute(array($itemName));
请注意,我们在您的查询中有一个?
,然后我们在您的execute
调用中为它发送一个值。好了:)
- 我会处理好的
$itemName
包装起来,或者更好地使用准备好的语句。“php文件没有显示任何错误:”-这是因为您没有检查它们。添加$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常)打开连接后立即执行代码>致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在C:\WWW\htdocs\test\批发\php\getproduct.php:10堆栈跟踪:#0 C:\WWW\htdocs\test\批发\php\getproduct.php(10):PDOStatement->execute()#在C:\WWW\htdocs\test\wholesale\php\getproduct.php的第10行中,我尝试添加单引号,但仍然没有显示任何内容。该字段是一个VarChar。即使使用此方法,它似乎也不会显示。如果字段中有两个单词,会有什么区别吗?我尝试添加了一个try-and-catch,但也没有显示。我不确定我是否正确添加了该语句,但使用您提供的显示错误代码仍然没有显示任何内容?我把这句话写错了吗?@Elevant请看@Fred ii-他会到的;-)(很好的回答,顺便说一句,和往常一样:P)我会让这些改变有点道理,尽管有保留words@Elevant阴暗地;-)太好了,终于解决了,我没有意识到保留的话的事情,谢谢你,伙计,我会看看保留的作品等等。我真的不明白你用蜱虫环绕是什么意思。@elevate非常欢迎你,很高兴能帮上忙,cheers@Fred-我介意我做一个小改动,在这个伟大的答案的结尾添加两行代码吗?
$sql = "SELECT * FROM `order` WHERE itemName = ? ";
$stmt = $conn->prepare($sql);
$stmt->execute(array($itemName));