使用PHP执行多个SQL查询

时间:2014-06-19 07:15:49

标签: php mysql sql sql-server joomla

我有一个Web表单,应该将数据存储到数据库中的两个不同的表中。在我的包含中,我有一个执行必要查询的php文件。 Web表单应存储两条信息:xp值从表单提交到users表,文章id提交到completed_quests表。单独地,查询完全按照预期工作。但是,如果我尝试同时执行两个查询,则只执行第一个查询而忽略第二个查询。如何在用户点击提交按钮后运行这两个查询?

(编辑)我更新了代码。为了澄清,我的php文件中还有其他代码定义了这些查询中使用的变量。这些只是我试图运行的两个查询,我需要知道如何运行这两个查询,因为它似乎忽略了第二个(更新)。它现在正在工作,但是我遇到了INSERT查询创建重复条目的问题。

(编辑)我再次更新了代码。我使用ON DUPLICATE KEY UPDATE来避免表中的重复条目。我确保用户标识是表中的主键,现在它运行正常。

mysql_select_db("questroot_joomla", $con);

mysql_query("INSERT INTO arp2i_completed_quests (user_id, content_id) Values ($userId, $currentArticle)
            ON DUPLICATE KEY UPDATE content_id=$currentArticle");

mysql_query( "UPDATE arp2i_users"
. " SET userxp= $userXp"
. " WHERE id = $userId");

mysql_close($con);

3 个答案:

答案 0 :(得分:1)

$sql = "INSERT INTO `arp2i_completed_quests` (`user_id`, `content_id`) Values ('$_POST[current_user]', '$_POST[current_article]')";

/* it's not in $sql ->> */   "UPDATE `arp2i_users`
    SET `userxp`= '$_POST[xpValue]'
    WHERE `id` = '$_POST[current_user]'";

试试这个:

$sql = "INSERT INTO `arp2i_completed_quests` (`user_id`, `content_id`) Values
   ('$_POST[current_user]', '$_POST[current_article]');
   UPDATE `arp2i_users`
   SET `userxp`= '$_POST[xpValue]'
   WHERE `id` = '$_POST[current_user]'";

答案 1 :(得分:0)

这里的很多人只是在回答,好像你使用的是PHP,而不是一个已经设计为你处理所有这些东西的框架,并且安全地做了,包括检查注入等。你使用框架来制作它更简单,避免做不安全的事情。 JForm,JDatabaseQuery和API的其他部分的组合将处理好多个表的更新,你可以看到整个核心。如何做到这一点取决于你正在做什么,例如更像是在保存用户数据时更新配置文件表,还是更像是在保存内容时更新资产表或创建新标记。你应该做的是停止对抗API并开始使用它对你有利。

答案 2 :(得分:-2)

您可以根据需要添加许多mysqli_ *查询:

mysqli_query($link, "INSERT INTO `arp2i_completed_quests` (`user_id`, `content_id`) Values ('".$_POST['current_user']."', '".$_POST['current_article']."')";

mysqli_query($link, "UPDATE `arp2i_users` SET `userxp`= '".$_POST['xpValue']."' WHERE `id` = '".$_POST['current_user']."'");