[英]SQL query inserting twice
我正在創建一個測驗頁面,該頁面會提出問題,並在最后顯示最高得分表。 我正在通過Ajax訪問此頁面以插入用戶名和得分,並且將其插入了兩次。
<?php
$servername = "localhost";
$username = "root";
$password = "pswd";
$dbname = "mydb";
$toJsonArr = array();
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_GET["username"])) {
$username = $_GET["username"];
$score = $_GET["score"];
$sql = "INSERT INTO `fullstackQuiz` (`id`, `place`, `username`, `points`, `now`) VALUES (NULL, '0', '$username', '$score', CURRENT_TIMESTAMP);";
$result = $conn->query($sql);
if ($conn->query($sql) === TRUE) {
echo "1";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
} else {
$sql = "SELECT * FROM `fullstackQuiz` ORDER BY `fullstackQuiz`.`points` DESC LIMIT 10";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$toJsonArr[] = $row;
}
} else {
echo "0 results";
}
echo json_encode($toJsonArr);
$conn->close();
}
?>
我的Ajax代碼:
$.ajax({
type: "GET",
url: "sql.php",
data: { username: "abc", score: "99" },
success: function(data) {
console.log("success");
}
});
每次Ajax運行時,由於某種原因它將兩次創建記錄。
您重復$conn->query($sql)
兩次。 刪除一個,它將起作用:
//$result = $conn->query($sql); <== Remove this line.
if ($conn->query($sql) === true) {
echo "1";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
另外,請勿將NULL
傳遞給自動遞增ID,只需將其從查詢中排除即可。 並且如果place
字段是數字,則將值作為數字傳遞而不帶撇號:
$sql = "INSERT INTO `fullstackQuiz` (`place`, `username`, `points`, `now`)
VALUES (0, '$username', '$score', CURRENT_TIMESTAMP);";
最后,您的查詢對SQL攻擊開放。 請改用參數化查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.