如何用中的INSERT和SELECT执行单个查询,然后读取选择结果? 我想插入然后选择一些东西,所有这些都必须在一个查询中完成......
我知道它在单个查询中接受多个命令...但我想读取查询结果而我无法读取结果。我这样做:
$results=mysql_query("
INSERT INTO table1 (field1,field2) VALUES('aaa','bbbb') ON DUPLICATE KEY UPDATE `field1` = 'cccc', `field2`='dddddd';
SELECT field3 Form Table3 WHERE field3='eeeee';
",$connection);
while ($rows = mysql_fetch_array($results, MYSQL_NUM))
echo $rows[0];
答案 0 :(得分:4)
一切都必须在一个查询中完成......
为什么需要在一个查询中执行所有操作?
像Wiseguy所说,我认为你所寻找的东西被称为交易。
此外,考虑更新到PDO可能是一个好主意,这将为您提供更完整的工具集,如交易和查询参数。
无论如何,为了回答你的初步问题,不可能。
更新:以下是PDO中的交易示例。
try
{
$pdo->beginTransaction();
$pdo->query(' ... ');
$pdo->query(' ... ');
$pdo->query(' ... ');
$pdo->commit();
}
catch(Exception $e)
{
$pdo->rollback();
die($e->getCode() . ': ' . $e->getMessage());
}
答案 1 :(得分:3)
不可能,并且不建议这样做,因为kappa指出,如果你执行2个单独的查询,你将能够检查结果等,这是更好的。
答案 2 :(得分:2)
如果使用mysqli
扩展名,可以在PHP中发送多个语句,出于很多原因,最好使用旧的mysql扩展名来代替旧的mysql扩展名。以下是根据您的问题从文档的multiple statements部分修改示例:
$mysqli = new mysqli("example.com", "user", "password", "database");
$sql .= "INSERT INTO table1 (field1,field2) VALUES('aaa','bbbb') ON DUPLICATE KEY UPDATE `field1` = 'cccc', `field2`='dddddd';";
$sql .= "SELECT field3 Form Table3 WHERE field3='eeeee';";
$mysqli->multi_query($sql);
do {
if ($res = $mysqli->store_result()) {
var_dump($res->fetch_all(MYSQLI_ASSOC));
$res->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
?>
请注意,文档确实将通话时间用于多个语句的安全风险,每个人都指出这些风险。当然,另一个原因是,如果你想让第二个陈述受到第一个陈述的影响,那并不总是一个好主意。
答案 3 :(得分:0)
我也不建议这样做,但您可以使用pdo执行此操作,如此主题所示:PDO support for multiple queries (PDO_MYSQL, PDO_MYSQLND)