1

Adminer での同じリクエストにはエラーはありませんが、php では

SQL 構文にエラーがあります。near 'SET @lastID = last_insert_id(); を使用する正しい構文については、MariaDB サーバーのバージョンに対応するマニュアルを確認してください。INSERT INTO p_messages(letter_id、user_id、messa' 行 1)。

PHP:

$DB->query("INSERT INTO p_letters(user_1_id, user_1_name, create_date) VALUES ('".htmlspecialchars($accountId)."', '".htmlspecialchars($username)."', now()); SET @lastID = LAST_INSERT_ID(); INSERT INTO p_messages(letter_id, user_id, message) VALUES (@lastID, '".htmlspecialchars($accountId)."', '".htmlspecialchars($text)."');");

SQL:

INSERT INTO p_letters(user_1_id, user_1_name, create_date) VALUES ('acc583bfa62de6f66.05116379', '212312313', now()); SET @lastID = LAST_INSERT_ID(); INSERT INTO p_messages(letter_id, user_id, message) VALUES (@lastID, 'acc583bfa62de6f66.05116379', 'Проверка');
4

1 に答える 1

2

個別の API 呼び出しでクエリを実行することになっています。

$DB->query("INSERT INTO ...");
$DB->query("SET @lastID = LAST_INSERT_ID()");
$DB->query("INSERT INTO ...");

LAST_INSERT_ID() を直接使用できるため、実際にはここで 2 番目のクエリは必要ないことに注意してください。

また、データベースとのやり取りに「 HTML特殊文字」という名前の関数を使用しないでください。代わりに、準備済みステートメントを使用する必要があります。

multi_query を使用するという提案は不当であり、誤解を招くものであり、多くの問題を引き起こすことに注意してください。

于 2016-11-28T12:57:01.463 に答える