这个程序编得挺逗啊: 既然循环中要入库的内容和前面的select语句取出的内容毫无关系,只是为了控制循环次数,那为什么要这么写呢? 象下面这样写可读性好,而且肯定行! $sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'"; $result=mysql_query($sql); $sn=mysql_num_rows($result);//加上这句不就完了? for($i=0;$i<$sn;$i++){ $sql="insert into Orders set idBasket='$idOrder',idUser='$idOrderUser',dtCreate=current_date()"; $result=mysql_query($sql);}
你的循环在执行一次后就停止了,是因为你把$result重新赋值(空值)。 改成这样试试看(改动之处位于最后一句) ---------------------- $sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'"; $result=mysql_query($sql) or die($sql); while($cart_product=mysql_fetch_array($result)){ $sql="insert into Orders set idBasket='$idOrder',idUser='$idOrderUser',dtCreate=current_date()"; //$result=mysql_query($sql) or die($sql); mysql_query($sql) or die($sql); }
此外,程序中使用fetch array得到的数据要用数组访问吧。 我没听说可以直接用变量访问的(难道我孤陋寡闻?)。 建议更改为 $sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'"; $result=mysql_query($sql) or die($sql); while($cart_product=mysql_fetch_array($result)){ $idOrder=$cart_product['idOrder']; $idOrderUser=$cart_product['idOrderUser']; $sql="insert into Orders set idBasket='$idOrder',idUser='$idOrderUser',dtCreate=current_date()"; } 或者 $sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'"; $result=mysql_query($sql) or die($sql); while($cart_product=mysql_fetch_array($result)){ $sql="insert into Orders set idBasket='".$cart_product['idOrder']."',idUser='".$cart_product['idOrderUser']."',dtCreate=current_date()"; }
while($cart_product=mysql_fetch_array($result))这样只返回一次,一个值!当然只能循环一次了!
如果算一下长度再决定循环的次数就不会只是一个了!
既然循环中要入库的内容和前面的select语句取出的内容毫无关系,只是为了控制循环次数,那为什么要这么写呢?
象下面这样写可读性好,而且肯定行!
$sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'";
$result=mysql_query($sql);
$sn=mysql_num_rows($result);//加上这句不就完了?
for($i=0;$i<$sn;$i++){
$sql="insert into Orders set idBasket='$idOrder',idUser='$idOrderUser',dtCreate=current_date()";
$result=mysql_query($sql);}
改成这样试试看(改动之处位于最后一句)
----------------------
$sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'";
$result=mysql_query($sql) or die($sql);
while($cart_product=mysql_fetch_array($result)){
$sql="insert into Orders set idBasket='$idOrder',idUser='$idOrderUser',dtCreate=current_date()";
//$result=mysql_query($sql) or die($sql);
mysql_query($sql) or die($sql);
}
我也把while里面的$result改成另外的一个名字,但是还是不行。
把while里面的insert 改成select 也不行。
这是什么问题?
我把while里面的改成list()=each()是可以的insert n多次,只不过输入的不是想要的。我现在想到了另一个办法,要试一下再说。
要知道有的数据库是可以用select ... into 的语句直接进行
数据复制的。
我没听说可以直接用变量访问的(难道我孤陋寡闻?)。
建议更改为
$sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'";
$result=mysql_query($sql) or die($sql);
while($cart_product=mysql_fetch_array($result)){
$idOrder=$cart_product['idOrder'];
$idOrderUser=$cart_product['idOrderUser'];
$sql="insert into Orders set idBasket='$idOrder',idUser='$idOrderUser',dtCreate=current_date()";
}
或者
$sql="select * from Cart where idUser='5f7d19df1c3cb8da9644a8f43f8daf36'";
$result=mysql_query($sql) or die($sql);
while($cart_product=mysql_fetch_array($result)){
$sql="insert into Orders set idBasket='".$cart_product['idOrder']."',idUser='".$cart_product['idOrderUser']."',dtCreate=current_date()";
}
数组自然是数组,不过我没有把那几个写出来,只写了几个不在$cart_product里面的。谢谢各位。问题我自己解决了。