2010-03-15 228 views
1

基本上,我有3个表;用户和项目,然后我有'users_projects'允许一对多编队。当用户添加一个项目时,我需要存储项目信息,然后在usersprojects表中存储'userid'和'projectid'。这听起来像是非常简单的,但是我认为语法有问题!?多次运行MySQL INSERT查询(将值插入多个表)

既然这样,我有这个作为我的INSERT查询(值进入2页不同的表):

$projectid = $_POST['projectid']; 
    $pname = $_POST['pname']; 
    $pdeadline = $_POST['pdeadline']; 
    $pdetails = $_POST['pdetails']; 

    $userid = $_POST['userid']; 

$sql = "INSERT INTO projects (projectid, pname, pdeadline, pdetails) VALUES 
    ('{$projectid}','{$pname}','{$pdeadline}','{$pdetails}')"; 


$sql = "INSERT INTO users_projects (userid, projectid) VALUES 
    ('{$userid}','{$projectid}')"; 

$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 
header("Location: frontview.php"); 
exit(); 
+1

查询本身(除了SQL注入问题)似乎没有问题。这可能有助于查看更多源代码来查看查询的执行方式。 – Kibbee 2010-03-15 17:37:55

+0

我已根据要求更新了此问题,并提供了更多信息! – Yvonne 2010-03-15 18:11:19

+0

项目ID是否正确进入项目表?它在两个查询之间不会改变,因此您可能需要检查usersprojects表并确保您使用正确的类型定义了第二列。 – 2010-03-15 18:15:58

回答

1

你根本都忘了执行每个查询的SQL。添加

mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

每个查询和你应该没问题。

b.t.w(1)它总是有帮助的上的SQL日志与tail -f打开控制台测试(/var/log/mysql/下)
b.t.w.(2)你在你的代码重安全问题。
b.t.w(3)您可能要考虑使用PDO/Mysqli而不是旧的mysql扩展。 (4)这会让你的生活变得更简单,使用某种类型的包装(一个好的类)来接近数据库,而不是直接在你的代码中执行。

+0

我已更新的问题,包括所有的代码 – Yvonne 2010-03-15 17:58:40

0

是的,我会检查的两件事是

1)是否正在执行查询?像提到的其他海报一样,你是否在设置SQL之间执行SQL查询? 2)如果你打印/调试/显示你插入的变量,它们是否被填充?如果你看到插入的东西,但有些数据是空白的,那么在此之前可能会有些东西被炸毁,而这些变量将是空白的。

+0

你可以再看看,我已经添加更多信息的帖子,我认为这是我没有执行查询每次像你说的... – Yvonne 2010-03-15 17:57:20

+0

嗨,你知道我怎么能做到这一点?(打印或调试)变量?它只有项目ID没有被存储在用户项目表中,所以关闭!!! – Yvonne 2010-03-15 18:45:33

0

我可能会误解,但你把标题(“位置:main.php”);在你的脚本中间?

+0

没有抱歉我没有当我编辑上面的示例代码时,这是一瞬间!这将是相当embaressing :) – Yvonne 2010-03-15 18:19:41

0
$projectid=mysql_insert_id($connection); 

我叫这是我第一次查询后,这将从您的项目表中获取自动增量值并将其存储在$专案编号,然后第二个查询会使用它。 所以执行我的第一个查询后,我把上面的代码放在那里,而不需要改变任何东西!

0

您似乎试图只执行一次mysql_query()。你有两个查询,因此它需要使用两次,一次在每个查询:

$sql = "INSERT INTO projects (projectid, projectname, projectdeadline, projectdetails) VALUES 
    ('{$projectid}','{$projectname}','{$projectdeadline}','{$projectdetails}')"; 
$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

$sql = "INSERT INTO usersprojects (userid, projectid) VALUES 
    ('{$userid}','{$projectid}')"; 
$result = mysql_query($sql, $connection) 
    or die("MySQL Error: ".mysql_error()); 

或者,你可以使用mysqli_multi_query(),但可能会需要你的代码的重写显著使用mysqli接口。