使用转义$ _SESSION var的MySQL Query返回boolean?

时间:2013-09-06 01:01:14

标签: php arrays session mysqli

我遇到了一些麻烦。我需要在表中返回一组数据。

这里很快就是表结构 -

DB ->
users -> user_id , user_name , user_pass , user_email ;
urls -> user_id , url , title ;

在页面上我有当前登录的用户,$ _SESSION变量中的user_id - SESSION'user_id'。我需要返回urls表中的所有(url)s,它们具有与SESSION变量中设置的user_id相同的user_id。这是我的代码,它几乎可以工作,但是当我尝试获取数组时,它会从$ results获得一个布尔值。任何帮助将不胜感激!最后一行print_r只是为了查看返回的内容。

$mysqli = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$sql = "SELECT * FROM url WHERE user_id = ";
$sql .= mysqli_real_escape_string($mysqli, $_SESSION['user_id']);
$result = mysqli_query($mysqli, $sql);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
print_r($row);

这是我得到的错误 -

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in     C:\xampp\htdocs\practice\include\feed.php on line 10

第10行就是这条线......

$row = mysqli_fetch_array($result, MYSQLI_NUM);

再次感谢!

2 个答案:

答案 0 :(得分:0)

$mysqli = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$escapedID = mysqli_real_escape_string($mysqli, $_SESSION['user_id']);
$sql = "SELECT * FROM url WHERE user_id = '".$escapedID."'";
$result = mysqli_query($mysqli, $sql);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
print_r($row);

答案 1 :(得分:0)

mysqli_query()失败时返回FALSE。请参阅文档here。查询可能失败,因为您在FROM子句中写了“url”;您将表名称列为上面的“网址”。