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执行查询,它的工作原理!!
答案 0 :(得分: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;
}
变量。
应该是:
{{1}}
答案 1 :(得分:3)
这是因为你在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;
}
答案 2 :(得分: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' ");
答案 3 :(得分:0)
显然查询失败了。你没有任何形式的错误检查,所以你基本上没有机会抓住错误。尝试重写这样的代码:
$query = mysql_query("...") or die(mysql_error());
将吐出导致查询失败的确切mysql错误。请记住,即使SQL语句本身完全有效,查询可能会失败的原因还有很多。如果没有检查那些潜在的错误情况,你基本上已经把自己画成了一个角落。