我有一个PHP代码,需要在db中插入值。但是,当我在数据库上运行脚本时,它将生成具有相同值的2行。如果我直接在数据库上运行查询,它将生成1行(应该是)。我的代码有什么问题?
<?php
$id = htmlspecialchars($_GET["id"]);
$username = htmlspecialchars($_GET["username"]);
$score = htmlspecialchars($_GET["score"]);
$region = htmlspecialchars($_GET["region"]);
$elapsed_time = htmlspecialchars($_GET["elapsed_time"]);
$acquired_date = htmlspecialchars($_GET["acquired_date"]);
// Create connection
$conn = new mysqli("localhost", "root", "mypassword", "test");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO Utenti (username, region, score, elapsed_time, acquired_date) VALUES (".chr(34).$username.chr(34).",".chr(34).$region.chr(34).",".$score.",".chr(34).$elapsed_time.chr(34).",".chr(34).$acquired_date.chr(34).");";
$result = $conn->query($sql);
if ($conn->query($sql) === TRUE) {
echo "Inserted";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
这是我的表配置:
CREATE TABLE `Utenti` (
`id` int(11) NOT NULL,
`username` text COLLATE utf8_unicode_ci NOT NULL,
`region` text COLLATE utf8_unicode_ci NOT NULL,
`score` int(11) NOT NULL,
`elapsed_time` time NOT NULL,
`acquired_date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我这样加载变量:
my_url/insert.php?username=Example®ion=France&score=200&elapsed_time=01:15:00&acquired_date=2018-11-30 22:40:00
答案 0 :(得分:0)
您确实在代码中两次运行了查询。
首先在声明SQL语句之后:
$result = $conn->query($sql);
第二个if
块:
if ($conn->query($sql) === TRUE) {
您最好使用类似:
的结构$status = $conn->query($sql);
if ($status === TRUE) {
echo "Inserted";
...