2012-05-28 20 views
0

我想檢查是否有行我的數據庫存在這樣的:檢查mysqli的結果。如果行已存在

$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 ....

所以,如果它存在我做一件事,如果它不是我做另一件事,我一直在尋找大約一個小時來找到原因,也許我正在用我的PHP5的東西混合舊的PHP4?

我已經嘗試了很多,嘗試了一些例子,但往往得到的錯誤:mysql_fetch_array() expects parameter 1 to be resource, string given

或者我應該檢查它在查詢本身?

+1

你知道[Bobby Tables](http://bobby-tables.com/)的故事嗎?你在做什麼是一個非常糟糕的主意。 – Amadan

+0

你的代碼看起來有問題。寫它的方式,我建議你在處理你的具體問題之前先解決它的第一個問題。您可能首先想問問題。 – hakre

+0

好吧,如果你能指出你認爲它有的'許多問題',除了通常的'omg noob sql注入警報!'。而我沒有包括我的$ db定義的事實? – TrySpace

回答

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 
} 

此外,您還需要清理您檢查查詢字符串的方式 - 只是處理查詢變量你想要,而不是整個字符串。建議還爲查詢變量和表列使用不同的名稱。