-1

我已经开始学习 mysqli 准备语句技术,并坚持以下几行:

include 'config.php';
$location=$_SESSION['cl'];
$sql = $db->prepare("SELECT * FROM locations WHERE loc LIKE ?");
$sql -> bind_param('s',$location);
$sql -> execute();
$sql->store_result();
$sql -> bind_results($results);
while($sql->fetch()){
echo $results;
} 

任何人都可以解释什么可能是错的?

4

1 回答 1

2

最大和最重要的问题是缺少错误报告

它不仅破坏了这个特殊的问题,而且破坏了您使用 PHP 的整个体验。
每次出现问题时,PHP 都会告诉您——发生了什么以及该怪谁。只要你让。你总是应该的。

在实时站点上,您必须查看错误日志,因此,设置必须是

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

在本地开发服务器上,可以在屏幕上出错:

error_reporting(E_ALL);
ini_set('display_errors',1);

当您看到错误消息时,问题就解决了。(虽然只有一个。将遵循另一个)

还在连接config.php 之前添加以下行:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

收到来自 mysql 端的所有错误的通知

另请注意,您不应该使用 LIKE 进行字符串比较,并且您的查询必须是

SELECT loc FROM locations WHERE loc = ?
于 2013-09-02T17:16:07.100 回答