警告:mysql_fetch_array()期望参数1是资源

时间:2011-05-18 18:51:18

标签: php mysql

  

可能重复:
  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

我正在退出,但同时还有这个消息

3 个答案:

答案 0 :(得分:9)

你确实意识到while($result = mysql_fetch_array( $result))踩踏了$result的现有价值,对吧?使用其他变量。

答案 1 :(得分:4)

三个问题:

  1. 你在哪里打电话mysql_connect()
  2. 你在循环语句中覆盖了$result
  3. 代码中有一个巨大的SQL注入漏洞。

答案 2 :(得分:0)

RAVI您可以通过更改此代码来修复SQL注入代码:

enter image description here 编码恐怖

$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注入问题。