'where子句'中的未知列'xxx'

时间:2014-01-05 16:49:56

标签: php mysql

我正在搜索我的网站,搜索字词存储在数据库中。

这是我的代码

<?php
$search = $_GET["q"];
if ($search <= "") {
 }
else {
  $con = mysql_connect("localhost", "cl49-XXX", "XXX");
  if (!$con) {
    die('Could not connect: line 513 ' . mysql_error());
  }

mysql_select_db("cl49-XXX", $con) or die("Unable to select database"); 

$result = mysql_query("SELECT * FROM registrations WHERE 'rname' LIKE '%$search%'") or die('Error: Line 519 (' . mysql_error() . ')');

$num_rows = mysql_num_rows($result);   
 if ($num_rows=="0"){
  echo"<h4>&nbsp;&nbsp;&nbsp;&nbsp;No Results Found for <b>$search</b>. Please try a different search</h3>";
  }

  else { 
echo "<h3>$num_rows results found for <b> $search</b></h3><br /><br />";   
   }

如果我搜索名称“donna”(此名称在数据库中),我会收到错误

  

'where子句'中的未知列'donna'

4 个答案:

答案 0 :(得分:4)

正如所有社区所说:请不要使用 mysql _ 函数,请尝试使用mysqli或PDO。
建议:逃避输入,防止注射等。

执行:$search = mysql_real_escape_string( $_GET["q"] );

并更改此行

$result = mysql_query("SELECT * FROM registrations WHERE `rname` LIKE '%". $search ."%'") or die('Error: Line 519 (' . mysql_error() . ')');

编辑(脚本改进)。
mysql_num_rows返回一个整数值,那么,为什么要将它与字符串进行比较?

$num_rows = mysql_num_rows($result);   
 if (!$num_rows){

if ($num_rows == 0) ...

答案 1 :(得分:1)

更改

mysql_query("SELECT * FROM registrations WHERE 'rname' LIKE '%$search%'")

mysql_query("SELECT * FROM `registrations` WHERE `rname` LIKE '%".$search."%'")

答案 2 :(得分:0)

假设您的表中的列名是rname

WHERE 'rname' LIKE 

应该是

WHERE rname LIKE

答案 3 :(得分:0)

`和'之间存在差异。您已在此帖子中使用了列名称rname和'%$ search%'。我猜你实际上在你的代码中使用了'%$ search%`。

更改您的代码如下。

$result = mysql_query("SELECT * FROM registrations WHERE `rname` LIKE '%$search%'") or die('Error: Line 519 (' . mysql_error() . ')');