可能重复:mysql_fetch_array()期望参数1是资源,在select中给出布尔值
我厌倦了看到这个错误信息任何人请帮助我;它是一个简单的php mysql搜索引擎;其中搜索元素是“adm_no”;
mY代码如下
<?php
require_once("lib/connection.php");
require_once("lib/functions.php");
$adm_no=$_POST['adm_no'];
//if (!$adm_no==ctype_digit) echo "You Entered wrong Admission no Recheack Admission no" ; exit();
$clas=$_POST['clas'];
$query="SELECT * FROM $clas WHERE adm_no = $adm_no";
$result = mysql_query($query);
//searchs the query in db.
while($result = mysql_fetch_array( $result))
{
echo $result['adm_no'];
echo " ";
echo $result['adm_dt'];
echo "";
echo $result['name'];
echo "";
echo $result['dob'];
echo " ";
echo $result['f_name'];
echo " ";
echo $result['f_office'];
echo " ";
echo $result['f_o_no'];
echo " ";
echo $result['m_name'];
echo " ";
echo $result['m_office'];
echo " ";
echo $result['addr'];
echo " ";
} ;
而我得到的错误是
Warning: mysql_fetch_array() expects parameter 1 to be resource, array given in C:\wamp\www\st_db_1\search_db.php on line 10
我正在退出,但随着这个消息
3 回答
你确实意识到
while($result = mysql_fetch_array( $result))
踩踏了$result
的现有值,对吗?使用其他变量 .三个问题:
你在哪里打电话mysql_connect()?
你在循环语句中覆盖了
$result
.代码中有一个巨大的SQL注入漏洞 .
RAVI您可以通过更改此代码来修复SQL注入代码:
Coding horror
到 approved code :
不要忘记在表名周围添加反引号 .
更重要的是不要忘记单引号
'
参数或你仍然会容易受到攻击!见:How does the SQL injection from the "Bobby Tables" XKCD comic work?
对于SQL注入一般 .
并且:How to prevent SQL injection with dynamic tablenames?
对于使用动态表或字段名称时的SQL注入问题 .