我在sql
中有一个表格,其中包含许多列,如姓名,电子邮件,....
我只是想知道表中是否有带有已发布名称的行。
为此,我使用此代码:
$name = $_POST['name'];
$query="SELECT *FROM mytable WHERE name = '$name'";
$result = mysql_query($query);
if(!empty($result)){
//do something
}else{
}
但当我从这条线上移走一个qotu时,我的情况总是如此,不是空的(我不知道为什么)
$query="SELECT *FROM mytable WHERE name = $name";
我收到此错误
unknown column in where clause
那么我错过了什么?
答案 0 :(得分:1)
你必须逃避$name
$query = 'SELECT * FROM mytable WHERE name = "' . $name . '";
编辑:
如果你使用mysqli,请使用:
$query = 'SELECT * FROM mytable WHERE name = "' . $mysqli->real_escape_string($name) . '";
答案 1 :(得分:0)
试
$name = $_POST['name'];
$query="SELECT count(*) as num FROM mytable WHERE name = '$name'";
$result = mysql_query($query);
$data = mysql_fetch_assoc($result);
if($data['num'] > 0){
//do something
}else{
}
答案 2 :(得分:0)
<?php
$query = $bdd->prepare('SELECT * FROM mytable WHERE name = ?');
$query->execute(array($_POST['name']));
while($result=$query->fetch()){
// do what you want
}
?>
答案 3 :(得分:0)
$name = $_POST['name'];
$query="SELECT name FROM mytable WHERE name = '" .$name. "'";
$result = mysqli_query($query);
$result = mysqli_fetch_assoc($result); // fetch data
$result = $result['name'];
if(!empty($result)){
//do something
}else{
}
我希望这样有效..不要选择*并使用mysqli,如果没有获取$ result,那么它总是如此......
答案 4 :(得分:0)
这里使用!empty($result)
没有意义,因为mysql_query()
将始终返回SELECT查询的查询句柄,其他查询返回TRUE / FALSE,失败时返回FALSE。
你可能想要的是:
if (mysql_num_rows($result)!=0) {
//do something
}
else{
}
另外,mysql函数现在已经过折旧。请改用mysqli并始终转义用户输入以防止sql注入。