PHPを使用して、mysqliテーブルにある情報を更新しようとしています。mysqlではなくmysqliを使用することにしました。残念ながら、私はOOPの知識がなく、すべてのチュートリアル(私が見つけた)がOOPにあるため、手続き型スタイルも完了しようとしているため、どこにも答えが見つからないようです。
以下は私が作成したスクリプトです。各コマンドが何をしていると思うかを示すコメントを追加しました。
<?php
DEFINE('DB_USER', 'root');
DEFINE('DB_PASS', 'password');
DEFINE('DB_NAME', 'test');
DEFINE('DB_HOST', 'localhost');
//connect to db
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die(mysqli_connect_error($dbc));
mysqli_set_charset($dbc, 'utf8');
//form not submitted
if(!isset($_POST['submit'])){
$q = "SELECT * FROM people WHERE people_id = $_GET[id]";//compares id in database with id in address bar
$r = mysqli_query($dbc, $q);//query the database
$person = mysqli_fetch_array($r, MYSQLI_ASSOC);//returns results from the databse in the form of an array
}else{//form submitted
$q = "SELECT * FROM people WHERE people_id = $_POST[id]";//compares id in database with id in form
$r2 = mysqli_query($dbc, $q);//query the database
$person = mysqli_fetch_array($r2, MYSQLI_ASSOC);//returns results from the database in an array
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];
$hobby = $_POST['hobby'];
$id = $_POST['id'];
//mysqli code to update the database
$update = "UPDATE people
SET people_fname = $fname,
people_lname = $lname,
people_age = $age,
people_hobby = $hobby
WHERE people_id = $id";
//the query that updates the database
$r = @mysqli_query($dbc, $update) or die(mysqli_error($r));
//1 row changed then echo the home page link
if(mysqli_affected_rows($dbc) == 1){
echo "<a href=\"index.php\">home page</a>";
}
}
?>
更新フォーム
<form action="update.php" method="post">
<p>First name<input type="text" name="fname" value="<?php echo "$person[people_fname]" ?>" /></p>
<p>Last name<input type="text" name="lname" value="<?php echo "$person[people_lname]" ?>" /></p>
<p>Your age<input type="text" name="age" value="<?php echo "$person[people_age]" ?>" /></p>
<p>Your hobby<input type="text" name="hobby" value="<?php echo "$person[people_hobby]" ?>" /></p>
<input type="hidden" name="id" value="<?php echo $_GET['id'] ?>" />
<input type="submit" name="submit" value="MODIFY" />
</form>`
フォームを送信すると、次のエラーメッセージが表示されます
Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\sandbox\update.php on line 39
私はこれが問題がにあることを私に伝えていることを理解しています
$r = @mysqli_query($dbc, $update) or die(mysqli_error($r));
そこで、2番目のパラメーターとしてsqliコードを入れようとしましたが(これは変数を入れるのと同じですが、最後の手段でした)、正しくないようで、まだ機能しませんでした。私もphp.netを見ましたが、彼らが与えた例から答えを見つけることができませんでした
アドバイスしてください、これは単純なことだと思いましたか?