如果行已存在,请检查mysqli结果

时间:2012-05-28 19:38:51

标签: php duplicates

我正在尝试检查我的数据库中是否存在这样的行:

 $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的东西混在一起?< / p>

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

或者我应该在查询中检查它?

1 个答案:

答案 0 :(得分:1)

错误在哪一行?!

如果它位于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
}

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