簡體   English   中英

在單查詢MySQL中執行INSERT和SELECT

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM