【问题标题】:Show fields from MySQL DB from Search从搜索中显示来自 MySQL DB 的字段
【发布时间】:2013-08-14 15:22:25
【问题描述】:

我正在尝试根据搜索显示来自数据库的字段

搜索条件将在地址栏中(例如 /search_results.php?q=tea 如果用户搜索tea)

这是我的代码:

    <?php
$name=$_GET["q"];
if ($name<="0"){echo( "You did not enter a 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 products WHERE $name LIKE '$prodname%' ")or die('Error: Line 519' );
$row = mysql_fetch_array($result);
$prodID=$row['prodID'];
$prodname=$row['prodname'];
$catagory=$row['catagory'];
}

echo"   $prodID , $prodname, $catagory ";        
?>  

运行代码时我得到了

错误:第 519 行

【问题讨论】:

  • PSA: mysql_* 函数是 deprecated in PHP 5.5。不建议编写新代码,因为它会阻止您将来升级。相反,请使用 MySQLiPDObe a better PHP Developer
  • 如果您发布有关特定错误的帖子,您必须包括完整的错误消息(带有行号)以及至少该行及其前一行的代码。
  • @JasonMcCreary...我有??...
  • 完整的错误信息是什么? 519行是什么?你试过什么?

标签: php html mysql database search


【解决方案1】:

首先,要注意 sql 注入。您正在将 $_GET 数组中的变量直接插入到查询中。

关于错误,看起来 $name 包含不受支持的字符,如空格,或者 products 表不存在。

您可以将表名放在“`”字符之间,为了查看错误,您可以通过以下方式更改行:

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

【讨论】:

  • 感谢您,更改了此链接,现在获取Error: Line 519 (Unknown column 'tea' in 'where clause')
猜你喜欢
  • 1970-01-01
  • 2021-01-15
  • 2013-08-21
  • 2022-12-17
  • 2015-12-28
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多