检查 mysqli 结果是否已经存在行


Check mysqli result if row already exists

我正在尝试检查我的数据库中是否存在一行,如下所示:

 $uid = $_GET['queryString'];
    if(isset($_GET['queryString'])) {
    echo "New: ".$uid."<BR>";
    $query = "SELECT * FROM stuff WHERE $uid";
    // Escape Query
    $queryE = $db->real_escape_string($query);
        $results = $db->query($queryE);
        if(($results->num_rows) > 0) {
             echo "NO!";
        }
        else
        {
             echo "Make new row";
         }
    }
    else
    {
    echo 'Error!';
    }   

但是我不断收到错误:Trying to get property of non-object in ....

所以如果它存在,我会做一件事,如果它不存在,我会做另一件事,我已经搜索了大约一个小时来找到原因,也许我把旧的 PHP4 和我的 PHP5 东西混在一起了?

我已经尝试了很多,尝试了一些示例,但往往会得到错误:mysql_fetch_array() expects parameter 1 to be resource, string given

还是我应该在查询本身中检查它?

错误在哪一行?!

如果它位于real_escape_string行上,则您尚未正确实例化$db。

如果它在$results->num_rows行上,请尝试更改

$results = $db->query($queryE);到:

if(!($results = $db->query($queryE))) {
    echo 'Make new row';
} else {
    // user likely exists, check $results
}

此外,您需要清理检查查询字符串的方式 - 只需处理所需的查询变量,而不是整个字符串。还建议对查询变量和表列使用不同的名称。