【问题标题】:MySQL prepared statements throwing error in PHPMySQL准备好的语句在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

【问题讨论】:

    标签: php mysqli prepared-statement


    【解决方案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://stackoverflow.com/a/18753263/2694511

    【讨论】:

      【解决方案2】:

      做完之后

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

      使用

      $query->fetch();
      

      【讨论】:

      • 很高兴帮助队友
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多