-2
$tSQL = "insert into events(title,start,end,allday,url,customerid) VALUES(\"" . $_POST['title'] . "\", FROM_UNIXTIME($epochstart), FROM_UNIXTIME($epochend), \"$allday\", \"$url\", \"$customerid\")";
$mysqli->multi_query($tSQL);
$lasterror = $mysqli->error;



$tSQL = "update events set url = \"details.php?\"" . mysql_insert_id() . " where idevents = \"$eventid\"";
$row = $mysqli->multi_query($tSQL);
$lasterror = $mysqli->error;

echo print_r($tSQL);

私のinsertステートメントは確かにレコードを挿入しますが、mysql_insert_id()は0を返し続けます。そのイベントテーブルには自動インクリメントされた主キーがあり、それも正常に実行されているため、このようにするべきではありません。最後に挿入された ID を取得する方法について何か提案はありますか?

4

4 に答える 4

4

クエリは を介し​​て実行されるmysqliため、mysql関数は挿入された ID を保持しません。代わりにmysqliバージョンを使用してください:

$id = $mysqli->insert_id;
于 2012-12-14T07:07:22.503 に答える
4

を使用mysqliしているためmysql

手続き型スタイルを使用mysql_insert_id()している場合は、単純に置き換えますmysqli_insert_id()

または、オブジェクト指向スタイル$mysqli->insert_idを使用している場合に置き換えます

于 2012-12-14T07:08:27.137 に答える
3

mysqli拡張機能を使用しているため、変更

$tSQL = "update events set url = \"details.php?\"" . mysql_insert_id() . " where idevents = \"$eventid\"";

$tSQL = "update events set url = \"details.php?\"" .$mysqli->insert_id. " where idevents = \"$eventid\"";
于 2012-12-14T07:07:02.190 に答える
1

mysqliの改良版を使っているからmysqlです。

mysqli->insert_idの代わりに使用mysql->insert_id()

$tSQL = "insert into events(title,start,end,allday,url,customerid) VALUES(\"" . $_POST['title'] . "\", FROM_UNIXTIME($epochstart), FROM_UNIXTIME($epochend), \"$allday\", \"$url\", \"$customerid\")";
    $mysqli->multi_query($tSQL);
    $lasterror = $mysqli->error;

    $lastInsId=$mysqli->insert_id();

    $tSQL = "update events set url = \"details.php?\"" . $lastInsId . " where idevents = \"$eventid\"";
    $row = $mysqli->multi_query($tSQL);
    $lasterror = $mysqli->error;

    echo print_r($tSQL);
于 2012-12-14T07:11:30.090 に答える