Mysql_num_rows没有返回任何值

时间:2015-01-26 06:50:55

标签: php mysql

我的代码有什么问题?每次回声此图像用作封面图片,但删除查询工作正常。我可以修复它吗?

    <?php
     session_start();
     if(!empty($_SESSION['userId']) && !empty($_SESSION['name'])){
     include ('connect.php');
     dbConnect();
    if (isset($_GET['ximgid'])) {

  $del=mysql_query("Delete FROM project_image WHERE ximgid='".$_GET['ximgid']."' And coverflag !='1'");
  $delete=mysql_num_rows($del);
  if($delete==1){
    echo "<script type='text/javascript'>alert('Sucessfully Delete !!!')</script>";
    echo "<script>javascript:window.location = 'projectImage.php'</script>";
  }else{
    echo "<script type='text/javascript'>alert('This Image Used As Cover Image')</script>";
    echo "<script >window.location.href = 'projectImage.php'</script>";
  }
}else{
  echo "<script>javascript:window.location = 'index.php'</script>";
   }
 }
?>

4 个答案:

答案 0 :(得分:4)

mysql_num_rows仅适用于select声明。

对于删除语句,您必须使用mysql_affected_rows

这是mysql_affected_rows的{​​{3}}部分:

  

从结果集中检索行数。这个命令只是   对于返回实际结果的SELECT或SHOW等语句有效   组。要检索受INSERT,UPDATE影响的行数,   REPLACE或DELETE查询,使用mysql_affected_rows()。

答案 1 :(得分:0)

mysql_affected_rows()是要走的路

$delete=mysql_affected_rows($del);
if($delete>0){
echo "<script type='text/javascript'>alert('Sucessfully Delete !!!')    </script>";
echo "<script>javascript:window.location = 'projectImage.php'</script>";
}else if($delete==0){
echo "<script type='text/javascript'>alert('This Image Used As Cover Image')</script>";
echo "<script >window.location.href = 'projectImage.php'</script>";
}else{
echo "<script type='text/javascript'>alert('mysql error')</script>";
}

答案 2 :(得分:0)

我必须以另一种方式解决我的问题,如下所示:

      <?php
       session_start();
       if(!empty($_SESSION['userId']) && !empty($_SESSION['name'])){
        include ('connect.php');
        dbConnect();

         if(isset($_GET['ximgid'])){
         $selQuery = "SELECT coverflag FROM project_image WHERE ximgid ='".trim($_GET['ximgid'])."' AND  zid = '1000' AND xpid = '".trim($_GET['pid'])."'";
         $flagtResult=mysql_query($selQuery);
         $flagRow=mysql_fetch_array($flagtResult);
         mysql_free_result($flagRow);
         $cover=$flagRow[0];
         if($cover == 1){
         echo "<script type='text/javascript'>alert('Used as cover picture')</script>";
         echo "<script>javascript:window.location = 'projectImage.php'</script>";
        }else{
        $sql = "DELETE FROM project_image WHERE ximgid = '".trim($_GET['ximgid'])."' AND coverflag != '1' AND zid = '1000' AND xpid = '".trim($_GET['pid'])."'";
        $result = mysql_query($sql) or die(mysql_error());

        if($result > 0){
            echo "<script type='text/javascript'>alert('Sucessfully Detele !!!')</script>";
            echo "<script>javascript:window.location = 'projectImage.php'</script>";
        }
      }


    }
 }else{
    echo "<script>javascript:window.location = 'index.php'</script>";
  }
?>

现在我可以得到正确的输出..谢谢大家。

答案 3 :(得分:-1)

首先,你似乎正在逃避ximgid和coverflag&#39;如果那些不是varchar字段,会在你的sql中抛出语法错误。

$del=mysql_query("Delete FROM project_image WHERE ximgid=".$_GET['ximgid']." And coverflag !=1;");

要解决的第二个问题是您正在使用$ _GET参数并将其直接放入您的SQL查询中,这只是发生故障所以我建议接下来将其更改为:

$del=mysql_query("Delete FROM project_image WHERE ximgid=".mysql_real_escape_string($_GET['ximgid'])." And coverflag !=1;");

如果您需要额外的帮助调试SQL,您可以随时暂时拨打

echo mysql_error();

在调用mysql_query之后,为了显示来自服务器的错误消息。