Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\APMServ-v5.2.6\APMServ5.2.6\www\htdocs\0135\update_material.php on line 13
一下是修改页面的代码:
<?php 
include("conn.php");
$ID=$_GET['ID'];
$sql = mysql_query("select * from tbl_material where ID=$ID" ); //此处为第13行
$info = mysql_fetch_array($sql);
?>
这个是上一个页面点击修改或删除后就跳到修改页面了一下是代码:
<td align="center" height="28px"><a href="update_material.php" ID=<?php echo $info[ID] ;?>>修改</a><a href="del_material.php?ID=<?php echo $info[ID] ;?>">删除</a></td>
再下面是执行修改数据库的代码了:
<?php
include("conn.php");
$mtSN=htmlspecialchars($_POST['mtSN']); //获取材质编码
$mtName=htmlspecialchars($_POST['mtName']); //获取材质名称
$mtStSN=htmlspecialchars($_POST['mtStSN']); //所属产品分类编码
$mtOrder=htmlspecialchars($_POST['mtOrder']);   //获取排序号
$mtMemo=htmlspecialchars($_POST['mtMemo']);
$ID=$_POST['ID'];$strSql="update tbl_material set mtSN='$mtSN',mtName='$mtName',mtStSN='$mtStSN',mtOrder='$mtOrder' where ID=$ID"; //对表进行修改操作
mysql_query($strSql,$conn) or die("插入时出错".mysql_error());//发送SQL请求
echo "<script language='javascript'>alert('信息修改成功!');window.location.href='show_material.php';</script>";
?>

解决方案 »

  1.   

    还木有连接数据库或连接失败,问题应该是出在conn.php中。
      

  2.   

    <a href="update_material.php" ID=<?php echo $info[ID] ;?>>改成<a href="update_material.php?ID=<?php echo $info[ID];?>">
      

  3.   

    conn.php下代码:
    <?php 
    $conn = mysql_connect("localhost","root","406297671") or die ( "mysql_error()");
    mysql_select_db("mebe",$conn);
    mysql_query("set names utf8");
    ?>
      

  4.   

    $sql = "select * from tbl_material where ID=$ID" ; 
    echo $sql;  //输出一下,看能取到id吗
      

  5.   

    是你没有结果集得事吧  你把语句   “select * from tbl_material where ID=$ID”打印一下看看  然后用phpmyadmin 执行一下 看看有对不对
      

  6.   


    抱歉,我看错了。可能是查询语句有问题,查询那一行改一下,看有没有错误:
    $sql = mysql_query("select * from tbl_material where ID=$ID" ) or die(mysql_error());
      

  7.   

    mysql_query("SET NAMES utf8",$conn );
      

  8.   

    改成这样的就能获得正确的哪个ID的数据了
    <?php 
    include("conn.php");
    $ID=$_GET['ID'];
    $sql = mysql_query("select * from tbl_material where ID=$ID");
    $info = mysql_fetch_array($sql);
    ?>
    纳闷的事又发生了,当我点击修改后的保存按钮后出现了这个:
    插入时出错You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1代码是我上面发的最后一个
      

  9.   

    mysql_query("select * from tbl_material where ID=$ID",$conn );
      

  10.   

    mysql_fetch_array(): 如果说是这里出错的话,那最大的原因就是上边的sql语句执行错误了。
    $sql = mysql_query("select * from tbl_material where ID=$ID" ); //这里执行错误,可能原因有2:  
    1 . $ID没有取到值或者取值错误(请检查下数据值和类型)
    2 .数据库中的字段不是ID而是其他。
      

  11.   

    接收POST提交的数据后为什么要用htmlspecialchars()函数处理呢,还是用mysql_escape_string()处理一下吧,有可能是构造的SQL语句中出现了引号的问题。输出$strSql看看。
      

  12.   

    sorry  $conn 可以不用写id是数值型?
    你数据到底用post还是get提交
      

  13.   


    这里的话ID就该用$ID=$_GET['ID']了而不是post
      

  14.   

    现在的问题是修改后提示信息修改成功,但是数据库中的数据始终没有被改动....
    代码如下:
    <?php
    include("conn.php");
    $mtSN=($_POST['mtSN']); //获取材质编码
    $mtName=($_POST['mtName']); //获取材质名称
    $mtStSN=($_POST['mtStSN']); //所属产品分类编码
    $mtOrder=($_POST['mtOrder']);   //获取排序号
    $mtMemo=($_POST['mtMemo']);   //获取备注
    $ID=$_POST['ID'];$strSql="update tbl_material set mtSN='$mtSN',mtName='$mtName',mtStSN='$mtStSN',mtOrder='$mtOrder' where ID='$ID'"; //对表进行修改操作
    mysql_query($strSql,$conn) or die("插入时出错".mysql_error());//发送SQL请求
    echo "<script language='javascript'>alert('信息修改成功!');window.location.href='show_material.php';</script>";
    ?>
      

  15.   

    那说明你的id参数是错误的 
    db里面压根没有这个id  你更新当然没有任何数据会被改动1 检查你的sql 
    2 你自己应该知道id到底是get还是post提交
      

  16.   

    $strSql="update tbl_material set mtSN='$mtSN',mtName='$mtName',mtStSN='$mtStSN',mtOrder='$mtOrder' where ID='$ID'"; 
    这句后面输出一下:
    echo $strSql;
      

  17.   

    输出的是这样的:
    update tbl_material set mtSN='ghgh',mtName='ghghgh',mtStSN='ghghgh',mtOrder='0' where ID='' 
    什么地方错了,没有ID的值
      

  18.   

    <td align="center" height="28px"><a href="update_material.php" ID=<?php echo $info[ID] ;?>>修改</a>
    没有看到你修改了这个错误!#2已经提醒你了
    <td align="center" height="28px"><a href="update_material.php?ID=<?php echo $info[ID] ;?>">修改</a>
      

  19.   

    同时感谢楼上所有人达人们,一下是调完的代码,看看什么地方还需要改进......
    <?php 
    include("conn.php");
    $ID=$_GET['ID'];
    $sql = mysql_query("select * from tbl_material where ID=$ID" ,$conn);
    $info = mysql_fetch_array($sql);
    ?>
    <form id="form1" name="form1" method="post" action="uping_material.php" >
      <table width="600" border="1" align="center" cellspacing="0" bordercolorlight="#66CCFF">
        <input name="readerid" type="hidden" id="readerid" value="<?php echo $info[ID]?>">  //关键的问题一直是在这里隐藏一个从数据库中读出来的ID    <tr>
        <td colspan="2" align="center" bgcolor="#6699CC">添加材质</td>
        </tr>
        <tr>
          <td width="171" align="right">材质编码:</td>
          <td width="419"><label>
            <input type="text" name="mtSN" id="textfield" value="<?php echo $info[mtSN];?>"/>
          </label></td>
        </tr>
        <tr>
          <td align="right">材质名称:</td>
          <td><input type="text" name="mtName" id="mtName" value="<?php echo $info[mtName];?>"/></td>
        </tr>
        <tr>
          <td align="right">所属产品分类编码:</td>
          <td><input type="text" name="mtStSN" id="mtStSN" value="<?php echo $info[mtStSN];?>"/></td>
        </tr>
        <tr>
          <td align="right">排序号:</td>
          <td><input type="text" name="mtOrder" id="mtOrder" value="<?php echo $info[mtOrder];?>"/></td>
        </tr>
        <tr>
          <td align="right">备注:</td>
          <td><label>
            <textarea name="mtMemo" id="mtMemo" cols="45" rows="5"><?php echo $info[mtMemo];?></textarea>
          </label></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><label>
          &nbsp;&nbsp;&nbsp;&nbsp;
            <input type="submit" name="button" id="button" value="保存" />
            &nbsp; &nbsp;
            <input type="reset" name="button2" id="button2" value="重置" />
          </label></td>
        </tr>
      </table>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
    </form>真正写入数据库的代码:<?php
    include("conn.php");
    $mtSN=($_POST['mtSN']); //获取材质编码
    $mtName=($_POST['mtName']); //获取材质名称
    $mtStSN=($_POST['mtStSN']); //所属产品分类编码
    $mtOrder=($_POST['mtOrder']);   //获取排序号
    $mtMemo=($_POST['mtMemo']);   //获取备注
    $ID=$_POST['readerid'];
    $strSql="update tbl_material set mtSN='$mtSN',mtName='$mtName',mtStSN='$mtStSN',mtOrder='$mtOrder' where ID='$ID'"; //对表进行修改操作
    //echo "$strSql";mysql_query($strSql,$conn) or die("插入时出错".mysql_error());//发送SQL请求
    echo "<script language='javascript'>alert('信息修改成功!');window.location.href='show_material.php';</script>";
    ?>
      

  20.   

    <input type="text" name="mtName" id="mtName" value="<?php echo $info[mtName];?>"/>
    这是怎么获取名称的?有点不明白