【发布时间】:2014-10-01 00:03:59
【问题描述】:
我正在尝试将信息插入到一个表中,并在一个字符串中更新另一个表(在同一个数据库中)中的两行。我的印象是,您可以通过在每次尝试后添加一个分号来非常简单地做到这一点,它会在同一个字符串中单独操作它们。
我想不出任何其他方法来实现在“games”表中插入数据并同时更新“players”表中两个唯一行中的数据的预期效果。
这是我的代码...
<?php
include_once('database-details.php');
$winner = mysqli_real_escape_string($db, $_REQUEST['winner']);
$loser = mysqli_real_escape_string($db, $_REQUEST['loser']);
$balled = mysqli_real_escape_string($db, $_REQUEST['balled']);
$fixtures = 'games';
$table = 'players';
$sql = "INSERT INTO `$fixtures` "
. "(`id`, `winner`, `loser`, `balled`) VALUES "
. "(NULL, '$winner', '$loser', '$balled') ;"
. "UPDATE `$table` SET apps = apps + 1, wins = wins + 1, balled = balled + $balled WHERE id = $winner ;"
. "UPDATE `$table` SET apps = apps + 1, losses = losses + 1, balled = balled - $balled WHERE id = $loser";
if(!$result = $db->query($sql)){
die('There was an error running the query [' . $db->error . ']');
}
$response = (object)array('status' => 'error');
if($result){
$response = (object)array(
'status' => 'ok',
'id' => $db->insert_id,
);
}
header('Content-type: application/json');
echo json_encode($response);
?>
脚注... 表单使用ajax提交,然后更新前端的内容。我可以确认,当我测试过的请求中只有一个请求时,所有三个单独提交并且每个都运行良好时,提交工作正常。只有当我将它们组合起来时它才会中断。
提前感谢您的帮助。
【问题讨论】:
-
从这里阅读:php.net/manual/en/mysqli.quickstart.multiple-statement.php 看来你应该使用 mysqli_multi_query()
-
刚刚尝试了您提供的链接,它似乎已经成功了!感谢您提供。
标签: php mysql sql database mysqli