我想在PHP中使用MySQLi編寫兩條準備好的語句。我是PHP和MySQLi的新手,所以我不知道是否應該關閉語句,關閉數據庫連接,將所有代碼放在函數中,或者只是讓代碼不在函數中。使用MySQLi在PHP中進行多重準備語句
基本上我只想插入一個記錄到一個表中,然後使用MySQLi將相同的記錄插入到另一個表中。
謝謝!
我想在PHP中使用MySQLi編寫兩條準備好的語句。我是PHP和MySQLi的新手,所以我不知道是否應該關閉語句,關閉數據庫連接,將所有代碼放在函數中,或者只是讓代碼不在函數中。使用MySQLi在PHP中進行多重準備語句
基本上我只想插入一個記錄到一個表中,然後使用MySQLi將相同的記錄插入到另一個表中。
謝謝!
直接關閉的mysqli頁:http://php.net/manual/en/mysqli.commit.php
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* set autocommit to off */
$mysqli->autocommit(FALSE);
/* Insert some values */
$mysqli->query("INSERT INTO table1 VALUES ('DEU', 'Bavarian', 'F', 11.2)");
$mysqli->query("INSERT INTO table2 VALUES ('DEU', 'Bavarian', 'F', 11.2)");
/* commit transaction */
$mysqli->commit();
/* close connection */
$mysqli->close();
*編輯與 「非理智」 行動準備的語句:
<?php
$mysqli = new mysqli("localhost", "root", "", "");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* set autocommit to off */
$mysqli->autocommit(FALSE);
$stmt1 = $mysqli->prepare("INSERT INTO tbl1 (id, intro) VALUES (?, ?)");
$stmt2 = $mysqli->prepare("INSERT INTO tbl2 (id, name) VALUES (?, ?)");
$str1 = 'abc';
$str2 = 'efg';
$str3 = 'hij';
$str4 = 'klm';
$stmt1->bind_param('ss', $str1, $str2);
$stmt2->bind_param('ss', $str3,$str4);
if ($stmt1->execute() == false)
{
echo 'First query failed: ' . $mysqli->error;
}
$stmt1->close();
if ($stmt2->execute() == false)
{
echo 'Second query failed: ' . $mysqli->error;
}
$stmt2->close();
$mysqli->close();
我看到這裏沒有準備好的聲明 – 2012-03-09 20:23:44
是啊我可以看到如何做到這一點沒有準備好的陳述,但我不知道如何處理準備好的陳述的頭頂,但無論如何感謝:) – David 2012-03-09 20:29:38