可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in 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
我正在退出,但同时还有这个消息
答案 0 :(得分:9)
你确实意识到while($result = mysql_fetch_array( $result))
踩踏了$result
的现有价值,对吧?使用其他变量。
答案 1 :(得分:4)
三个问题:
mysql_connect()
?$result
。答案 2 :(得分:0)
RAVI您可以通过更改此代码来修复SQL注入代码:
编码恐怖
$adm_no=$_POST['adm_no'];
$clas=$_POST['clas'];
$query="SELECT * FROM $clas WHERE adm_no = $adm_no";
此已批准的代码:
$allowed_tables = array('table1', 'table2'); //list of allowed tables
$clas = $_POST['clas'];
$adm_no= mysql_real_escape_string($_POST['adm_no']);
if (in_array($clas, $allowed_tables)) {
$query="SELECT * FROM `$clas` WHERE adm_no = '$adm_no'";
// ^ ^ backticks ^ ^ single quotes
}
不要忘记在桌面名称周围添加反引号
更重要的是不要忘记围绕参数的单引号'
,否则你仍然会受到攻击!
请参阅:How does the SQL injection from the "Bobby Tables" XKCD comic work?
对于一般的SQL注入
并且:How to prevent SQL injection with dynamic tablenames?
对于使用动态表或字段名称时的SQL注入问题。