2014-11-02 98 views
0

我需要从名为wishlist的表中插入数据到另一个表(wishlisturi_salvate)中,并且尽管插入看起来没问题,但是某些东西不能正常工作并且没有进行任何操作。感谢您的帮助, 对此,我真的非常感激。使用while循环插入到数据库

<?php 
session_start(); 
include ('conex.php'); 
$sel2="select id_wishlist from wishlisturi_salvate"; 
$que2=mysql_query($sel2); 
while($rez2=mysql_fetch_array($que2)) 
{ 
$a=$rez2['id_wishlist']; 
} 
$id_wishlist=$a; 
echo $id_wishlist; 
$sel="SELECT * from wishlist"; 
$que=mysql_query($sel); 
while ($rez=mysql_fetch_array($que)) 
{ 
$insert="INSERT INTO 'wishlisturi_salvate'('id_user', 'id_wishlist', 'id_produs',  'nume_produs', 'pret_produs', 'cantitate_produs', 'suma') 
    VALUES('".$_SESSION['id']."','".$id_wishlist."','".$rez['id_produs']."','".$rez['nume_produs']."','".$rez['pret_produs']."','".$rez['cantitate_produs']."','".$rez['suma']."')"; 
if(!mysql_query($insert)) echo "fml"; 
echo "<br>".$insert; 
} 

if(mysql_query($insert)) 
{ 
header("location:user.php"); 
} 
else echo "Nu s-a facut inserarea"; 
?> 
+0

'回声mysql_error()'是你的朋友。 – 2014-11-02 10:27:10

回答

1

无插入被作出,因为查询中错误的最有可能的:

蝙蝠权,已经有一个错误:

INSERT INTO 'wishlisturi_salvate'('id_user', 'id_wishlist', 'id_produs',  'nume_produs', 'pret_produs', 'cantitate_produs', 'suma') 

正确表的报价/列名必须是backtickts,而不是单引号

INSERT INTO `wishlisturi_salvate` (`id_user`, `id_wishlist`, `id_produs`, `nume_produs`, `pret_produs`, `cantitate_produs`, `suma`) 

或者只是忽略它们,它在这个行不行案件。

强制性注:

Please, don't use mysql_* functions in new code . They are no longer maintained and are officially deprecated . See the red box ? Learn about prepared statements instead, and use PDO or MySQLi - this article will help you decide which. If you choose PDO, here is a good tutorial .

旁注:

如果您还没有准备好,随时打开错误报告:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
+0

是的,我犯了一个错误,但我没有使用单引号和反提示尝试,但它仍然不能正常工作,所以这不是主要问题。你能想出来吗?我真的需要得到这个东西,因为这是一个项目,我没时间了...... – mihaicata1205 2014-11-02 10:35:09

+0

@ mihaicata1205只是做一步一步的调试,从第一个查询开始,检查ID是否正确回显,接下来为下一个查询构建sql语句,再次回显,并且可以使用'mysql_query(..)或者die(mysql_error());' – Ghost 2014-11-02 11:54:56

+0

是的,我试过了,但我无法弄清楚问题:插入有什么问题吗?(除了单引号) – mihaicata1205 2014-11-02 12:12:39

0

首先我会rcomend你使用PDOmysqli而不是mysql来避免SQL注入。

无论如何,如果你想插入一个表中的元素到另一个表中,我建议你使用插入语句和子选择。这样会更快,你会浪费更少的内存。

0

不是答案,更多是观察;循环遍历结果来构建一次发送给db的单个SQL插入多条语句会更有效率。

$insert = "INSERT INTO 'wishlisturi_salvate'('id_user', 'id_wishlist', 'id_produs',  'nume_produs', 'pret_produs', 'cantitate_produs', 'suma') VALUES "; 

foreach(of your results){ 
$insert .= "(x,y,z,a,b,c,d),"; 
} 

// now trim off last comma, then send to db. 
// or create an array then join it to the $insert 

同样的信息可以在这里读到:http://www.electrictoolbox.com/mysql-insert-multiple-records/

+0

啊是的,子选择为user1514329说。在你的db中完成这项工作。 – Cups 2014-11-02 10:28:52

+0

这是正确的,感谢您的建议,但首先我需要得到这件事,比我可以优化它。 – mihaicata1205 2014-11-02 10:36:31