Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用转义$\u会话变量的MySQL查询返回布尔值?_Php_Arrays_Session_Mysqli - Fatal编程技术网

Php 使用转义$\u会话变量的MySQL查询返回布尔值?

Php 使用转义$\u会话变量的MySQL查询返回布尔值?,php,arrays,session,mysqli,Php,Arrays,Session,Mysqli,我有点麻烦。我需要返回表中的一组数据 这里是表格结构- DB -> users -> user_id , user_name , user_pass , user_email ; urls -> user_id , url , title ; 在页面上,我有当前登录的用户,user\u id在$\u会话变量-会话“user\u id”中。我需要返回URL表中与会话变量中设置的URL具有相同匹配用户id的所有URL。这是我的代码,它几乎可以正常工作,但是当我试图获取一个数组时,

我有点麻烦。我需要返回表中的一组数据

这里是表格结构-

DB ->
users -> user_id , user_name , user_pass , user_email ;
urls -> user_id , url , title ;
在页面上,我有当前登录的用户,user\u id在$\u会话变量-会话“user\u id”中。我需要返回URL表中与会话变量中设置的URL具有相同匹配用户id的所有URL。这是我的代码,它几乎可以正常工作,但是当我试图获取一个数组时,它会从$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
第十行是这一行

$row = mysqli_fetch_array($result, MYSQLI_NUM);
再次感谢

试试看

$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);

mysqli_查询失败时返回FALSE。请参阅文档。查询可能失败,因为您已在FROM子句中写入url;您的表名列为上面的URL。

因此$result不代表有效的结果-即发生错误。错误是什么?大多数教程都展示了如何处理查询错误,可能是使用骰子。无论如何,请注意,使用占位符是正确的做法,并且给出的代码仍然容易受到注入和无效SQL语法的攻击,因为该值没有被引用。在这方面使用mysql\u real\u escape\u字符串来表示一个假定的数字值只是突出了误解。为什么从来没有人检查mysqli\u查询返回的结果?如果您这样做了,您会看到查询失败,mysqli_error有一个错误描述,这几乎肯定是查询中的语法错误。去扩展你的代码,做一些正确的错误检查,然后回来问一个合理的问题@user2246674-嗯,我有点难以理解您的确切意思,您是否有一个指向您推荐的文档的链接。@Gk3Biz请参阅-注意使用的if语句,以及对返回值的讨论。遵循提供的链接和其他地方的代码将产生类似于$r=mysqli_query$DBlink、$q或diemysqli_error$DBlink的习惯用法。Q=.$Q;。当然,包含查询是可选的。以某种方式处理无效的查询(die/log或程序逻辑)不是。@Mike W-我假设查询有错误,只是不确定它在哪里。感谢大家的帮助。哇,还是遇到了同样的错误,并且意识到整个过程中SELECT*from url是错误的——它本来就是url。非常抱歉,伙计们,谢谢你们的帮助。我仍然使用你的代码只是因为它看起来更干净了一点。