php - 'xxx' 中的未知列 'where clause'

标签 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”(这个名字在数据库中)我得到错误

Unknown column 'donna' in 'where clause'

最佳答案

正如所有社区所说:不要使用 mysql_ 函数,请尝试使用 mysqli 或 PDO。
建议:对输入进行转义,防止注入(inject)等

执行:$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 返回一个整数值,那么,为什么要将它与 string 进行比较?

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

或者 if ($num_rows == 0) ...

关于php - 'xxx' 中的未知列 'where clause',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936273/

相关文章:

php - 如何将 PHP 数组嵌入到 google 图表脚本中?

mysql - 我的 spring+hibernate 应用程序不关闭 jdbc 连接

mysql - 我的sql时间段的属性类型是什么

php - laravel 5 从未找到的数据库类中获取数据

mysql - 格式化mysql中的日期

php - 令人困惑的联接 - 全表,与另一个中的相应记录联接

php - php中同时post和get

mysql - 任何不在本地安装mysql服务器的安装mysql2 GEM的方法

php - PHP 的云托管 - 解释我的恐惧?

JavaScript 发送 GET 请求