mysqli_query插入不生成任何响应,连接正常,但没有插入数据

时间:2015-10-15 00:42:25

标签: php mysql forms mysqli

这是我的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);
}

2 个答案:

答案 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 statementsHow can I prevent SQL injection in PHP?

Add/Azure API App Client