2015-10-15 134 views
0

这是我的PHP脚本中的一个非常基本的html页面中的代码。我已经尝试过所有可能的单引号,双精度,单精度和双精度的变体。我根本没有得到任何答复。我已经过测试以确保连接已经完成,但是没有任何内容插入到数据库中。我只是不知道我做错了什么。mysqli_query插入不生成任何响应,连接正在工作,但没有插入任何数据

// 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

对于表名和列名,不需要使用撇号(')。删除联系人表中的撇号。你可以使用反引号(`)作为列名。

$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

+0

应该从列中删除所有引号/撇号。引号是用于字符串的。反引号是为列。 – chris85

0

您的订单被倒置,http://php.net/manual/en/mysqli.query.php

先连接,然后查询。

混合mysqli_query($ mysqli的链接,串$查询[摘要$ 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?

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); 
} 
+0

如果downvoting,后为什么(目前排名2 DVs; 2紫外线)。 – chris85

相关问题