这是我的PHP脚本中一个带有表单的非常基本的html页面上的代码。我已尝试过每个可能的单引号变量,双精度,单变量和双精度值。我根本没有得到任何回应。我已经过测试以确保连接已完成,但数据库中没有插入任何内容。我只是不知道我做错了什么。
// Check our connection
if (mysqli_connect_errno($con)) {
print_r("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(isset($_POST["submit"])){
$name = $_POST['name'];
$company = $_POST['company'];
$email = $_POST['email'];
$comment = $_POST['comment'];
// Insert our data
$query = mysqli_query("INSERT INTO 'contacts' ('id','name', 'company', 'email', 'comment') VALUES ('','$name', '$company', '$email', '$comment')", $con);
$result = ($query);
if( $result )
{
print_r('Success');
}
else
{
print_r('Query Failed');
}
mysqli_close($con);
}
答案 0 :(得分:0)
您不需要使用撇号('
)作为您的表名和列名。删除联系人表格中的撇号。您可以使用反引号(`)作为列名。
$query = mysqli_query($con, "INSERT INTO contacts (id, name, company, email, comment)
VALUES ('','$name', '$company', '$email', '$comment')");
您也很容易SQL injections,因此请使用*_real_escape_string
。
$name = mysqli_real_escape_string($con, $_POST['name']);
$company = mysqli_real_escape_string($con, $_POST['company']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$comment = mysqli_real_escape_string($con, $_POST['comment']);
在您使用mysqli_*
API时,您可能需要查看prepared statement。
答案 1 :(得分:0)
您的订单已被倒置,http://php.net/manual/en/mysqli.query.php。
首先连接,然后查询。
混合mysqli_query(mysqli $ link,字符串$ query [,int $ resultmode = MYSQLI_STORE_RESULT])
您还错误地在列名称周围使用了单引号;那些应该是反叛; When to use single quotes, double quotes, and backticks in MySQL。
此外,您永远不应将用户输入直接传递给SQL。这就是注射的发生方式。您应该考虑使用prepared statements。 How can I prevent SQL injection in PHP?
Add/Azure API App Client