在sql表中找到一行

时间:2014-10-23 11:42:05

标签: php mysql

我在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    

那么我错过了什么?

5 个答案:

答案 0 :(得分:1)

你必须逃避$name

$query = 'SELECT * FROM mytable WHERE name = "' . $name . '";

编辑:

如果你使用mysqli,请使用:

$query = 'SELECT * FROM mytable WHERE name = "' . $mysqli->real_escape_string($name) . '";

http://php.net/manual/de/mysqli.real-escape-string.php

答案 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注入。