首页 文章

警告:mysql_fetch_array()期望参数1是资源[重复]

提问于
浏览
-9

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

  • 0

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

  • 9

    三个问题:

    • 你在哪里打电话mysql_connect()

    • 你在循环语句中覆盖了 $result .

    • 代码中有一个巨大的SQL注入漏洞 .

  • 4

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

    enter image description here
    Coding horror

    $adm_no=$_POST['adm_no'];
    $clas=$_POST['clas'];
    $query="SELECT * FROM $clas WHERE adm_no = $adm_no";
    

    approved code

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

相关问题