2013-07-29 58 views
1

我試圖運行一個MYSQL查詢,它將返回一個ID超過特定值的所有服務。難以與SQL WHERE>'value'語句

$query = "SELECT id, name FROM services WHERE id > '14'"; 
    if ($query_run = mysqli_query($link, $query)) { 
     while ($results = mysqli_fetch_array($query_run)) { 
      echo $service_id = $results['id'].'<br>'; 
      echo $service_name = $results['name'].'<br>'; 
     } 
    } else { 
     echo mysqli_error($link); 
    } 

但是如果我使用一個變量是這樣的::

$query = "SELECT id, name FROM services WHERE id > $service_id"; 
    if ($query_run = mysqli_query($link, $query)) { 
     while ($results = mysqli_fetch_array($query_run)) { 
      echo $service_id = $results['id'].'<br>'; 
      echo $service_name = $results['name'].'<br>'; 
     } 
    } else { 
     echo mysqli_error($link); 
    } 

查詢不返回任何值,當我使用一個靜態值作爲比較,以「身份證」,如查詢工作正常

+3

** **警告你的代碼可能會受到SQL注入攻擊! –

+0

顯然service_id不是數字。在'$ query = ...'之前執行'var_dump($ service_id)'來看看裏面有什麼 – x4rf41

+0

感謝您對此的關注,但是這段代碼在這裏取得了巨大的效果,沒有任何文本用戶輸入,被使用,我還沒有實施任何其他安全措施,因爲我沒有得到的代碼工作在第一個 – CrossGuard

回答

3

當你硬編碼你放在引號周圍的值。 確保$ service_id表示爲一個字符串。

嘗試

$query = "SELECT id, name FROM services WHERE id > '$service_id'"; 
    if ($query_run = mysqli_query($link, $query)) { 
     while ($results = mysqli_fetch_array($query_run)) { 
      echo $service_id = $results['id'].'<br>'; 
      echo $service_name = $results['name'].'<br>'; 
     } 
    } else { 
     echo mysqli_error($link); 
    } 
+0

我試過這個,並沒有什麼區別。我認爲x4rf41可能有一點關於我的變量不是數字 – CrossGuard

+0

@metrosmurph回聲查詢,所以我們可以看看它。 – GeneralZero

+1

對不起,我自己解決了這個問題,這是PHP文件中的其他內容,我沒有將它包含在頂部的代碼中。抱歉!儘管感謝您的幫助 – CrossGuard

0
$query = "SELECT id, name FROM services WHERE id > '".$service_id."'";