Php Mysqli不插入任何数据

Php Mysqli不插入任何数据,php,mysql,mysqli,Php,Mysql,Mysqli,我刚从mysql改为mysqli,现在它不会插入任何数据(它插入空字段) 在我改变与mysqli的连接之前,它工作得很好 知道为什么会这样吗 <?php $mysqli = new mysqli("localhost", "root", "", "opdracht"); /* check connection */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connec

我刚从mysql改为mysqli,现在它不会插入任何数据(它插入空字段)

在我改变与mysqli的连接之前,它工作得很好

知道为什么会这样吗

<?php

$mysqli = new mysqli("localhost", "root", "", "opdracht");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}


    if($_POST['action'] == 'button'){ // als de knop is ingedrukt insert dan
    if(filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL) && preg_match('#\.[a-z]{2,6}$#i', $_POST['email'])){

        $voornaam  = mysqli_real_escape_string($_POST['voornaam']);
        $achternaam = mysqli_real_escape_string($_POST['achternaam']);
        $email  = mysqli_real_escape_string($_POST['email']);
        $telefoonnummer = mysqli_real_escape_string($_POST['telefoonnummer']);

        $query = mysqli_query($mysqli,"insert into 
           `form` (`id`,`voornaam`, `achternaam`, `email`, `telefoonnummer`) 
            values ('','".$voornaam."', '".$achternaam."', '".$email."', '".$telefoonnummer."')")
            or die(mysqli_error($mysqli));

        $subject = 'Een email van '.$voornaam.'';
        $headers  = 'MIME-Version: 1.0' ."\r\n";
        $headers .= "Content-type: text/html; charset=utf-8\r\n";   
        // opmaak mail
        $content = '<html><header><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </header><img src="http://www.tekstbureaudevulpen.nl/wp-content/uploads/2010/11/Webparking_logo.png"/><body>';
        $content .= '<p>Je hebt een mail van:</p>';
        $content .= $voornaam;
        $content .= ' ';
        $content .= $achternaam;
        $content .= '<p>'.$telefoonnummer.'</p>';
        $content .= '</body></html>';

        mail($email, $subject, $content, $headers); // Verstuurd de mail
        error_log(E_ALL);
 }
    }
?>

因为现在字符串转义也需要连接句柄。以下所有内容都需要更新

    $voornaam  = mysqli_real_escape_string($_POST['voornaam']);
    $achternaam = mysqli_real_escape_string($_POST['achternaam']);
    $email  = mysqli_real_escape_string($_POST['email']);
    $telefoonnummer = mysqli_real_escape_string($_POST['telefoonnummer']);
改为这种格式

    $voornaam  = mysqli_real_escape_string($mysqli,$_POST['voornaam']);
                                           ^

但是,即使在移动到新的API之后,您也不应该继续使用查询的字符串转义,为什么不使用准备好的语句呢?更安全,而且有更多的好处。

因为现在字符串转义也需要连接句柄。以下所有内容都需要更新

    $voornaam  = mysqli_real_escape_string($_POST['voornaam']);
    $achternaam = mysqli_real_escape_string($_POST['achternaam']);
    $email  = mysqli_real_escape_string($_POST['email']);
    $telefoonnummer = mysqli_real_escape_string($_POST['telefoonnummer']);
改为这种格式

    $voornaam  = mysqli_real_escape_string($mysqli,$_POST['voornaam']);
                                           ^

但是,即使在移动到新的API之后,您也不应该继续使用查询的字符串转义,为什么不使用准备好的语句呢?安全性更高,好处更多。

变量设置中缺少mysql连接:

$voornaam  = mysqli_real_escape_string($mysqli, $_POST['voornaam']);
$achternaam = mysqli_real_escape_string($mysqli, $_POST['achternaam']);
$email  = mysqli_real_escape_string($mysqli,$_POST['email']);
$telefoonnummer = mysqli_real_escape_string($mysqli, $_POST['telefoonnummer']);

此外,我不会使用$mysqli作为连接变量。首选Con或连接。

变量设置中缺少mysql连接:

$voornaam  = mysqli_real_escape_string($mysqli, $_POST['voornaam']);
$achternaam = mysqli_real_escape_string($mysqli, $_POST['achternaam']);
$email  = mysqli_real_escape_string($mysqli,$_POST['email']);
$telefoonnummer = mysqli_real_escape_string($mysqli, $_POST['telefoonnummer']);


此外,我不会使用$mysqli作为连接变量。Con或Connection是首选。

mysqli\u query(..)末尾忘了一个分号。如果您切换到
mysqli
以预防SQL注入,那么我担心您在这里可能不会受益很多,因为您仍然在使用
mysqli
的过程方法,我不确定,但您不需要mysqli\u connect吗?php.net/manual/en/function.mysqli-connect.php | | |在连接之前我从未见过
新的mysqli()
,所以它可以工作。@YUNOWORK
mysqli\u connect-mysqli的别名::\u construct()
new mysqli()
很好。在
mysqli\u query(…)
末尾忘了一个分号。如果您切换到
mysqli
以预防SQL注入,那么我担心您在这里可能不会受益很多,因为您仍然在使用
mysqli
的过程方法,我不确定,但您不需要mysqli\u连接吗?php.net/manual/en/function.mysqli-connect.php | | |在连接之前我从未见过
新的mysqli()
,所以它可以工作。@YUNOWORK
mysqli\u connect-mysqli的别名::\u construct()
new mysqli()
非常好。在更大的方案中,OP不应该以任何方式进行手动转义。他应该真正地将它们更新为
$voornaam=$mysqli->real_escape_string($\u POST['voornaam'])没错,但我只能建议对演示内容进行修复。谢谢,我可以在8分钟内接受。但是现在我的邮件功能不工作了,我需要在那里添加任何东西才能使它工作吗?这不是一个查询,我不认为mail()函数与mysqli有任何关系?这是正确的,
mail()
函数与您的MySQL代码没有任何关系在更大的方案中,OP无论如何都不应该进行手动转义。他真的应该将它们更新为
$voornaam=$mysqli->real\u escape\u字符串($\u POST['voornaam'));没错,但我只能建议对演示内容进行修复。谢谢,我可以在8分钟内接受。但是现在我的邮件功能不工作了,我需要在那里添加任何东西才能使它工作吗?这不是一个查询,我认为mail()函数与mysqli没有任何关系?没错,
mail()
函数与您的MySQL代码没有任何关系