[英]Mysql SELECT , find number of rows , then INSERT in a single query statement
[英]INSERT and SELECT in single query MySQL
如何在其中同時包含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];
所有這些都必須在一個查詢中完成...
為什么您需要在一個查詢中做所有事情?
就像Wiseguy所說的那樣,我認為您正在尋找的就是交易。
另外,考慮更新到PDO可能是一個好主意,這將為您提供更完整的工具集,例如事務和查詢參數。
無論如何,為了回答您的第一個問題,不行。
更新:這是PDO中事務的示例。
try
{
$pdo->beginTransaction();
$pdo->query(' ... ');
$pdo->query(' ... ');
$pdo->query(' ... ');
$pdo->commit();
}
catch(Exception $e)
{
$pdo->rollback();
die($e->getCode() . ': ' . $e->getMessage());
}
正如kappa指出的那樣,這是不可能的,也不建議這樣做,如果您執行2個單獨的查詢,則可以檢查結果等。
如果您使用的是mysqli
擴展名,則可以在PHP中發送多個語句,出於很多原因,最好使用它代替較早的mysql擴展名。 根據您的問題,這是文檔的多語句部分中的修改示例:
$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());
?>
請注意,該文檔確實將通話時間專用於每個人都指出的多條語句的安全風險。 當然,另一個並非總是好主意的原因是,您是否希望第二條語句受到第一條語句的影響。
我也不推薦這樣做,但是您可以使用pdo做到這一點,如以下線程所示: PDO支持多個查詢(PDO_MYSQL,PDO_MYSQLND)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.