-2
私はPHPが初めてで、SQLの自動インクリメントIDにコードを設定するのに少し問題があります。私が試みている方法は、非常に良いアプローチではなく、競争状態などのリスクについて知っていることを認識しています。これは、残りのコードを適切に並べ替えるまで、一時的になります。行を挿入するときにMySQLの自動インクリメントのプライマリキーフィールドに入れたいものは?
誰かが私がここで間違っていることを教えてください。または、有効なコードを取得するのを手伝ってください。
私のクラス:
<?php
$user = 'root';
$pass = '';
$db = 'testuser';
$con=mysqli_connect('localhost', $user, $pass, $db) or die('Unable to connect');
$data = json_decode(trim(key($_POST), '[]'), true);
$email = $data['email'];
$name = $data['name'];
$shortDes = $data['shortDes'];
$longDes = $data['longDes'];
$max = mysqli_prepare($con, 'SELECT MAX(society_id) FROM society');
$society_id = $max + 1;
$statement = mysqli_prepare($con, 'INSERT INTO society(society_id, name, email, short_des, long_des) VALUES (?, ?, ?, ?, ?)');
mysqli_stmt_bind_param($statement, 'issss', $societyId, $name, $email, $shortDes, $longDes);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
次のスニペットを中心に:ただ完全に自動インクリメントフィールドの値を除去するために必要
$max = mysqli_prepare($con, 'SELECT MAX(society_id) FROM society');
$society_id = $max + 1;
$statement = mysqli_prepare($con, 'INSERT INTO society(society_id, name, email, short_des, long_des) VALUES (?, ?, ?, ?, ?)');
mysqli_stmt_bind_param($statement, 'issss', $societyId, $name, $email, $shortDes, $longDes);
あなたは '$ max'クエリを実行しておらず、結果をフェッチしていません。また、 'MAX()'のエイリアスを使うべきです – Fabio
なぜMySQLが自動インクリメントを扱わないのですか?それはそれを行うように設計されているからです。 – Kenyon
私は自分のプライマリキーを自動インクリメントに設定しました。私はそれを正しく行ったと確信していますが、動作しません。 – kmil