6
最後に挿入されたオブジェクトのIDが必要です。私は準備された文を使用してSQLインジェクションを回避します。 しかし、私はIDを取得する方法がわかりません。MYSQLiを使用してPHPでプリペアドステートメントの後に挿入されたオブジェクトのIDにアクセスします。
$sql = "INSERT IGNORE INTO faculty (id, term, role, prefix, first_name,
middle_name, last_name, suffix) VALUES (?,?,?,?,?,?,?,?)";
if (!($stmt = $mysqli->prepare($sql)))
echo "Faculty Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
$stmt->bind_param('sissssss',
$faculty['id'],
$faculty['term'],
$faculty['role'],
$faculty->name->prefix,
$faculty->name->first,
$faculty->name->middle,
$faculty->name->last,
$faculty->name->suffix
);
if (!$stmt->execute())
echo "Faculty Execute failed: (" . $mysqli->errno . ") " . $mysqli->error;
$result = $stmt->insert_id;
echo "\n Result:" . $result;
$stmt->close();
結果が要素がデータベースに挿入されたデータベース
ソリューション のエントリであるにも関わらず、常に0です。問題は、私がテーブルidを作成したときに整数ではなく、従業員IDを表すvarcharであるということでした。これを修正するために、従業員IDを表の追加列として追加し、デフォルトのID int auto_increment主キーを使用しました。
私は実際にその機能を発見し、しかし、それを使用してみました、それは常に0 – user1165788
健全性チェックを返す - それは実際には間違いなく、行を挿入したのですか?つまりそれは 'INSERT'か' IGNORE'ですか? – Joe
私はそれを理解しました。それはテーブルに挿入されていましたが、プライマリキーのIDがプライマリキーの値を返さないように設定していた従業員コードであることが分かりました。私はちょうどデータベース内の追加の列として従業員コードを設定し、プライマリキーとしてデフォルトの自動インクリメントIDを使用し、それは働いた。 – user1165788