2016-01-01 101 views
0

我想從數據庫中選擇查詢。如果我寫這個代碼:PHP - 在查詢上搜索

$selectOption = $_GET['name']; 
echo $selectOption.'<br>'; 
$sql = "SELECT 'rpm' FROM sn WHERE power = '1s1s'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

while($row = $result->fetch_assoc()) { 
echo "rpm: " . $row["rpm"]; 
} 
} else { 
echo "0 results"; 
} 

它顯示我正確的答案。否則,如果我這樣寫:

$sql = "SELECT 'rpm' FROM 'sn' WHERE 'power' = '$selectOption'"; 

這表明我0結果。任何建議糾正上述查詢?

+3

使用反引號(')作爲字段名稱而不是單引號。 – frz3993

+0

'$ selectOption'包含什麼? –

+0

更好的是不要在字段名稱周圍使用單引號或波形字符。單引號將列名轉換爲字符串,波形符號或反斜槓不是標準的sql,除非您使用保留字作爲列名稱,否則不是必需的。這種情況下的最佳做法是重命名該列。 – Niagaradad

回答

1

你需要做兩件事情,兩者都在註釋中規定: - 在您的查詢

1.使用反引號(')是這樣的: -

$sql = "SELECT `rpm` FROM `sn` WHERE `power` = '$selectOption'"; 

2.Prevent您從SQL查詢注射。爲那個使用準備好的聲明。鏈接在評論部分給出。爲了您的幫助,我把它寫在我的答案中: - How can I prevent SQL injection in PHP?

+0

所以,你放棄了我的編輯http://stackoverflow.com/revisions/34558431/2和你的點#1不顯示爲「應該」;作爲「代碼」。 –

+0

不,我沒有丟棄。同時我也編輯了,我認爲是因爲丟棄發生 –