php中使用PDO 预编译查找结果集返回为空数组
数据库中有相关数据,但是使用pdo 预处理 返回结果集是空数组,没有明显的报错。求大神看看
<?php
header("content-type: text/html; charset=utf-8");
$dsn = "mysql:host=localhost; port= 3306;dbname=test;charset=utf8";
$username = "root";
$password = "12345";
$pdo = new PDO($dsn,$username,$password);
//设置错误处理模式为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//构建预编译SQL语句
$sql = "select * from student where (salary between ? and ?) and edu in ( ? )";
//预编译SQL语句,返回结果集
$PDOStatement = $pdo->prepare($sql);
$PDOStatement->bindValue(1,"10000");
$PDOStatement->bindValue(2,"20000");
$PDOStatement->bindValue(3,"'大专','本科','研究生'");
$PDOStatement->execute();
$rows = $PDOStatement->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);
//抛出异常并捕获错误信息
try{
}catch(PDOExcepton $error){
echo "错误状态码".$error->getCode();
echo "<br>错误状态码".$error->getCode();
echo "<br>错误行号".$error->getLine();
echo "<br>错误错误文件".$error->getFile();
echo "<br>错误信息".$error->getMessage();
}
结果是:
Array
(
)
[Finished in 1.2s]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这类问题应该都是先试试拼接SQL原始语句到数据库查询下,就能知道原因了。
问题出在$stmt->bindValue("3","大专");这一行,开始我是用的是一个占位符?代表了三个值edu in ( ? );
现在使用三个占位符分别代表三个值,结果集就有了
edu in (?,?,?);
$stmt->bindValue("3","大专");
$stmt->bindValue("4","本科");
$stmt->bindValue("5","研究生");
<?php
header("content-type:text/html;charset=utf8");
/*
@author: NEO
@createTime: 2017-08-17, 22:25:29
@description: PDO预处理
*/
$dsn ="mysql:host=localhost;dbname=dbname";
$user ="USER";
$password ="PASSWORD";
// 创建PDO对象
try{
}catch(PDOException $e){
}