PHP新手。准备好的声明不起作用

时间:2013-09-02 16:31:54

标签: php mysql mysqli prepared-statement

我已经开始学习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;
} 

有人可以解释可能出错的地方吗?

1 个答案:

答案 0 :(得分: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);

当您看到错误消息时,问题就解决了。 (只有一个。另一个将被跟随)

在<{strong> 连接:

之前的config.php 中添加以下行
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

从mysql端通知所有错误

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

SELECT loc FROM locations WHERE loc = ?