PHP中MySQL准备的语句抛出错误

PHP中MySQL准备的语句抛出错误,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,这是连接到我的数据库的代码。我确信用户名、密码和数据库名是正确的 $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->

这是连接到我的数据库的代码。我确信用户名、密码和数据库名是正确的

$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
,以及我的查询

我使用AMPS,它在使用我的代码时工作

我的问题是,当我打印
$id
$name
$price
时,我的结果总是
null

做了之后

$query->bind_result($id, $name, $price);   
使用

之后

$query->bind_result($id, $name, $price);   
使用


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();
当然,必要时替换列名


关于这一点,您可以在这里看到一个很好的解释:

阿里·拉希德(Ali Rasheed)说得对,您应该在执行
bind\u 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();
当然,必要时替换列名


你可以在这里看到一个很好的解释:

很高兴帮助mate很高兴帮助mate