MySQL准备好的语句在PHP中抛出错误
Posted
技术标签:
【中文标题】MySQL准备好的语句在PHP中抛出错误【英文标题】:MySQL prepared statements throwing error in PHP 【发布时间】:2017-09-15 01:01:10 【问题描述】:这是连接到我的数据库的代码。我确定用户名、密码和数据库名称是正确的。
$Myconn = mysqli_connect($this->host, $this->user, $this->pass, $this->DBname);
这是准备语句的代码:
$query =$Myconn->prepare("SELECT * FROM `AD` WHERE name=?");
$query->bind_param('s', $AD_Name);
$query->execute();
$query->store_result();
$query->bind_result($id, $name, $price);
而且我确信我正确发送了$AD_Name
以及我的查询。
我使用了 AMPPS,它在使用我的代码时可以正常工作。
我的问题是当我打印$id
或$name
或$price
时,我的结果总是null
。
【问题讨论】:
【参考方案1】:Ali Rasheed 是对的,您应该在执行 bind_result()
之后使用 fetch()
,但这里有一个更大的问题。您不能将bind_result()
与SELECT * ...
一起使用。它不能正常工作,因为bind_result()
不知道所选元素的顺序,因此它不知道哪个变量应该得到哪个值。相反,您应该修改为:
$query =$Myconn->prepare("SELECT id, name, price FROM `AD` WHERE name=?");
$query->bind_param('s', $AD_Name);
$query->execute();
$query->store_result();
$query->bind_result($id, $name, $price);
$query->fetch();
当然可以根据需要替换列名。
你可以在这里看到一个很好的解释:https://***.com/a/18753263/2694511
【讨论】:
【参考方案2】:做完之后
$query->bind_result($id, $name, $price);
使用
$query->fetch();
【讨论】:
很高兴帮助队友以上是关于MySQL准备好的语句在PHP中抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
php mysqli在嵌套循环中准备语句抛出命令或同步错误[重复]