这是我的 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);
}
最佳答案
您的订单已颠倒,http://php.net/manual/en/mysqli.query.php .
先连接,后查询。
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
您还错误地在列名称周围使用了单引号;这些应该是反引号; When to use single quotes, double quotes, and backticks in MySQL 。
此外,您永远不应该将用户输入直接传递给 SQL。这就是注入(inject)的发生方式。您应该考虑使用 prepared statements 。 How can I prevent SQL injection in PHP?
if (mysqli_connect_errno($con)) {
print_r("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(isset($_POST["submit"])){
$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']);
// Insert our data
$query = mysqli_query($con, "INSERT INTO `contacts` (`name`, `company`, `email`, `comment`) VALUES ('$name', '$company', '$email', '$comment')");
if($query) {
print_r('Success');
} else {
print_r('Query Failed');
}
mysqli_close($con);
}
关于php - mysqli_query insert 未生成任何响应,连接正常,但未插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137985/