-1
[作成]ボタンをクリックすると、レコードがカテゴリテーブルに追加されますが、何らかの理由でレコードが2回追加されます。それがどんなアイデアなのか?私は
if (isset($_POST['create'])) {
がどこから呼び出されたか分かりません。私は自分のプロジェクト全体で4ページしか持っていません。誰も私のデータベースにこの行が2回挿入されている理由を教えてもらえますか?
<?php require('dbConnect.php');
//use the variables we created in volleyLogin.php
session_start();
$username = $_SESSION['username'];
$user_id = $_SESSION['user_id'];
echo "user name is " . $username . "<br>";
echo "user id is " . $user_id . "<br>";
if (isset($_POST['create'])) {
$category = ($_POST['category']);
$name = ($_POST['name']);
$phonenumber = ($_POST['phonenumber']);
$address = ($_POST['address']);
$comment = ($_POST['comment']);
//check if the category being entered is already there
$check="SELECT COUNT(*) FROM category WHERE cat_name = '$_POST[category]'";
$get_value = mysqli_query($con,$check);
//check the number of values of the category being posted
$data = mysqli_fetch_array($get_value, MYSQLI_NUM);
//if the category name already exists in the category table
if($data[0] >= 1) {
echo "This Already Exists<br/>";
}
else if ($data[0] < 1)
{
//if it's not in there, then add the category in the category table.
$sql = "INSERT INTO category VALUES(NULL, '{$category}', '$user_id')";
$rs1=mysqli_query($con, $sql);
if ($con->query($sql) === TRUE) {
echo "Yes, it's been added correctly";
} else {
echo "Error: " . $sql . "<br>" . $con->error;
}
}
$con->close();
}
?>
<!doctype html>
<html>
<body>
<h2>Create new Contact</h2>
<form method="post" action="" name="frmAdd">
<p><input type="text" name = "category" id = "category" placeholder = "category"></p>
<p><input type="text" name = "name" id = "name" placeholder = "name"></p>
<p><input type="text" name = "phonenumber" id = "phonenumber" placeholder = "phone number"></p>
<p><input type="text" name = "address" id = "address" placeholder = "address"></p>
<p><input type="text" name = "comment" id = "comment" placeholder = "comment"></p>
<p><input type="submit" name = "create" id = "create" value = "Create new Contact"></p>
<a href="exit.php">Exit</a>
</form>
</body>
</html>
ありがとうございました。私はそれがなぜ機能するのか分かりませんが、それはありません。ここでは、私が入手した新しい本、PHP for the Webでこれらのセクションを読んでいきます。私は明らかにあなたの答えを9分で受け入れるでしょう。 – CHarris
いいです。おそらく、2つの異なるものを混ぜ合わせただけです。 PHPのSQLインジェクションを防ぐにはどうすればいいですか?(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 。あなたのコードは非常に脆弱です。入力データをクエリに直接入力しないでください。彼らを信じてはいけない、彼らはすべてのハッキーハッキーに行くことができます。 mysqli_real_escape_stringを使用するか、プリペアドステートメントを使用してください。 – Phiter