mysql トランザクションを実行できないのはなぜですか?
php コード スニペット:
/*-----データベース接続パラメータ--*/
$host="localhost";
$user="root";
$pwd="xxx";
/*--- --データベース接続 -*/
$db=mysql_connect($host,$user,$pwd);
$sql="START TRANSACTION;
SELECT @A :=MAX( iTopicId) FROM lun_topic;
INSERT INTO lun_topic VALUES(@A+1,'トピック','コンテンツ','著者',NOW(),1); COMMIT;";
$result=mysql_db_query($database,$sql);//この文は実行できず、エラーは報告されません
テーブル lun_topic
iTopicId、
vTitle、
txtMessage、
vPostId、
dPostDateTime、
iAreaId
--------------------------
MySql では、INNODB および BDB タイプのテーブルのみがトランザクション処理をサポートしていますが、デフォルトの MYISAM タイプはそれをサポートしていないことに注意してください。テーブル
CREATE TABLE t (i INT) TYPE を作成するときにテーブル タイプを指定できます。 = INNODB;
既存のテーブルのテーブル タイプを変換することもできます
ALTER TABLE t TYPE=INNODB
------ -------- -------------
------解決策----------- ------ ---
php の mysql 関数を実行するには、$sql を 4 つの文に分割する必要があります。また、
は一度に 1 つの SQL 命令のみを実行できます。実際、ストアド プロシージャの定義も単なる命令です。
------解決策------------------
PHP の mysql 関数は、ストアド プロシージャの定義に加えて、一度に 1 つの SQL 命令のみを実行できます