$ _GET没有插入MySQL数据库

时间:2015-02-01 01:17:03

标签: php

我有一个小的PHP脚本,我想用它来为SQL表添加一个值。

当我执行以下操作时:http://ipaddress/phptest.php?350

如果我只将350插入insert语句,它可以正常工作。我试图添加GET的结果,但似乎无法经过多次尝试。

我要么在表格中添加空白或“数组”。

任何帮助将不胜感激。

另外,我如何添加两个值? phptext.php?350&?450例如?

由于

<?php
$servername = "localhost";
$username = "administrator";
$password = "blabla";
$dbname = "test";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 


print_r($_GET);
if($_GET["a"] === "") echo "a is an empty string\n";
if($_GET["a"] === false) echo "a is false\n";
if($_GET["a"] === null) echo "a is null\n";
if(isset($_GET["a"])) echo "a is set\n";
if(!empty($_GET[a])) echo "a is not empty";


$sql = "INSERT INTO test.sensor (VALUE) VALUES ('$_GET["a"]')";


if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}




$conn->close();
?>

1 个答案:

答案 0 :(得分:1)

HTTP规范声明GET变量的传递方式如下例所示:

url.com/?bar=value&foo=value

从技术上讲,你传递的GET值是错误的。如我所见,更正将是:

http://ipaddress/phptest.php?a=350

另外,作为额外指针,在提交到SQL数据库之前清理变量,因为它会导致SQL注入漏洞。

您可能想要使用...

mysqli_real_escape_string();

或者使用准备好的陈述,这是一种更为接受/失败的安全方式。

供更多参考, http://php.net/manual/en/mysqli.real-escape-string.php