2011-03-16 109 views
1
if($_GET['confirm']){ 
     $coupon_id = $_GET['confirm']; 
     $query = mysql_query("SELECT * FROM purchases WHERE coupon_id = '$coupon_id'"); 
      while($rows = mysql_fetch_array($query)){ 
       $user_id = $rows['user_id']; 
       $query = mysql_query("INSERT INTO purchases_confirm VALUES(NULL,'$coupon_id','$user_id' "); 
       if($query){ 
        echo "inserting new values to database....done !"; 
       } 
      } 
     exit; 
     } 

它输出:警告:mysql_fetch_array():提供的参数是不是......奇怪的事情一个有效的MySQL结果资源,如果我执行命令行或phpMyAdmin的查询,它的工作原理!怪异mysql_fetch_array错误

+0

变量并不昂贵。为内部查询制作一个新的。 – 2011-03-16 18:23:20

回答

4

您不能重新指定$query变量,而mysql_fetch_array使用$query

应该是:

if($_GET['confirm']){ 
     $coupon_id = $_GET['confirm']; 
     $query = mysql_query("SELECT * FROM purchases WHERE coupon_id = '$coupon_id'"); 
      while($rows = mysql_fetch_array($query)){ 
       $user_id = $rows['user_id']; 
       $query2 = mysql_query("INSERT INTO purchases_confirm VALUES(NULL,'$coupon_id','$user_id' "); 
       if($query2){ 
        echo "inserting new values to database....done !"; 
       } 
      } 
     exit; 
     } 
0

显然查询的失败。你缺少任何形式的错误检查,所以你基本上抛弃了错误检测的机会。尝试重写这样的代码:

$query = mysql_query("...") or die(mysql_error()); 

which'll吐出确切的mysql错误,导致查询失败。请记住,即使SQL语句本身是完全有效的,查询可能会失败的原因还有很多。由于未能检查这些潜在的错误情况,你基本上已将自己置于一个角落。

3

这是因为在while while循环中,您将覆盖$query变量。您需要将$query变量更改为其他值。我一般用$sub_query所以它看起来像这样:

if($_GET['confirm']){ 
$coupon_id = $_GET['confirm']; 
$query = mysql_query("SELECT * FROM purchases WHERE coupon_id = '$coupon_id'"); 
while($rows = mysql_fetch_array($query)){ 
    $user_id = $rows['user_id']; 
    $sub_query = mysql_query("INSERT INTO purchases_confirm VALUES(NULL,'$coupon_id','$user_id' "); 
    if($sub_query){ 
     echo "inserting new values to database....done !"; 
    } 
} 
exit; 
} 
1

你正在改变$query内环路:$query = mysql_query("INSERT INTO purchases_confirm VALUES(NULL,'$coupon_id','$user_id' ");和下一次迭代你想mysql_fetch_array($query)。使用不同的变量插入:$another_quer = mysql_query("INSERT INTO purchases_confirm VALUES(NULL,'$coupon_id','$user_id' ");