if (!empty ($_POST['searchbird'])){
$searchbird=rawurlencode(trim($_POST['searchbird']));
$result = mysql_query("SELECT `sciname` FROM `wp_birds` WHERE $searchbird = `comname`");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$searchterm = mysql_fetch_row($result);
SQL数据库设置Col 4是comname,col 5是sciname
这是错误 无法运行查询:'where子句'
中的未知列'这是searchterm'答案 0 :(得分:2)
这是您当前的查询,
SELECT `sciname` FROM `wp_birds` WHERE $searchbird = `comname`
如果comName的数据类型是字符串,则该值应该用单引号括起来,因为它们是文字。
SELECT `sciname` FROM `wp_birds` WHERE `comname` = '$searchbird'
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:0)
首先,您将自己暴露给SQL injection 。在做任何其他事情之前,您需要涵盖这一点。 PDO library使其变得非常简单和安全。
关于您的问题,最终查询如下:
SELECT
sciname
FROMwp_birds
这是searchterm ='comname'
您要找的是以下内容(注意引号):
SELECT
sciname
FROMwp_birds
WHERE comname ='这是searchterm'
但你不应该这样做,因为你仍然接触到SQL注入。