2016-01-01 63 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

不,我没有丢弃。同时我也编辑了,我认为是因为丢弃发生 –