mysql コマンドを mysqli の新しい標準に合わせて変換しようとしています。スクリプトと質問を投稿します。私はすでにデータベースにテーブルを作成しました。
config.php:
$dbhost="databasehost";
$dbusername="username";
$dbpassword="password";
$dbname="databasename";
$connect = mysql_connect($dbhost, $dbusername, $dbpassword);
mysql_select_db($dbname,$connect) or die ("Could not connect to database");
?>
insert.php:
include("config.php");
if (isset($_POST[firstname]) && isset($_POST[lastname]) && isset($_POST[age])) {
$sql = "INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
mysql_query($sql, $connect);
header("Location: add.htm");
// "1 record added";
}
else {
echo "no record added";
}
if (!mysql_query($sql,$connect))
{
die('Error: ' . mysql_error());
}
mysql_close($connect);
?>
ビュー.php:
<?php
include("config.php");
$sql = mysql_query("SELECT * FROM Persons");
if ($sql) {
while($results = mysql_fetch_array($sql)) {
echo $results['FirstName'] . ', ' . $results['LastName'] . ', ' . $results['Age'] . '<br/>';
}
} else {
die('Error: ' . mysql_error());
}
mysql_close($connect);
?>
- まず、mysql の代わりに mysqli を使用するようにスクリプトを変更するにはどうすればよいですか?
- 次に、上記のスクリプトを使用すると、
フォームから何かを追加すると、常に重複したエントリが追加されます。どうすればそれを防ぐことができますか? - 第三に、SQL インジェクションを防ぐには、コードに何を追加できますか? PHP のアタッチには、「$firstname = trim(strip_tags(stripslashes($_POST['firstname'])));」を使用できることを知っています。入力をサニタイズしているので、それはSQLインジェクションもカバーしますか?