Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将表单字段插入数据库_Php_Mysql - Fatal编程技术网

Php 将表单字段插入数据库

Php 将表单字段插入数据库,php,mysql,Php,Mysql,我使用的是一个自定义表单帖子和数据发送到电子邮件按照下面的代码。但是,我对DB的insert语句似乎不起作用。而且,我的数据库中名为“leads”的表仍然是空的。 我基本上遵循了以下示例: 如果有任何指针可以完成sql插入工作,我们将不胜感激 <?php error_reporting(E_ALL); if($_POST){ $to = 'myemailaddres@example.com'; $subject = 'Website Enquiry'; $now = new DateT

我使用的是一个自定义表单帖子和数据发送到电子邮件按照下面的代码。但是,我对DB的insert语句似乎不起作用。而且,我的数据库中名为“leads”的表仍然是空的。 我基本上遵循了以下示例: 如果有任何指针可以完成sql插入工作,我们将不胜感激

<?php
error_reporting(E_ALL);
if($_POST){

$to = 'myemailaddres@example.com';

$subject = 'Website Enquiry';
$now = new DateTime();
$datesent=$now->format('Y-m-d H:i:s'); 

$name = $_POST['name'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
$comments =  $_POST['comments'];    
$fname =  $_POST['fname'];  

$username = "usertest";
$password = "pwdtest";
$dbname = "dbtest";
$servername = "localhost";


//spam checks

if ( isset($fname) && !isset($fname) ) {
    echo 'spam';
    exit();
} elseif ( preg_match("/http/i","$comments")  ){ 
    echo '<h1>Spam detected</h1><p>Sorry, no urls allowed in comment box.</p>';
    exit(); 
}

$data = clean($_POST);

if(validate($data) == 0){

    $email = $data['email'];
    $headers = "From: ".$data['name']." <".$email.">\r\n".
    "Bcc: <".$bcc.">\r\n".
    "X-Mailer: PHP/" . phpversion();


    if($data['form'] == 'quote') {
        $subject = 'Quick quote - '.$subject; 
    }else if($data['form'] == 'enquiry') {
        $subject = 'Enquiry Form - '.$subject; 
    }else{
        $subject = 'Enquiry Form - '.$subject; 
    }

    foreach ($data as $k => $v) { 
        if($k != "Submit" && $k != "form" && $k != "fname" && $k != "quiz" && $k != "captcha_code"){
            $k = str_replace ( "_" , " " , $k );
            $message .= $k.": ".$v."\n\r"; 
        }
    }

    if(mail($to, $subject, $message, $headers)){

        /****** TEST SEND TO DB ***********/


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO leads (name, telephone, email, date)
VALUES ($name, $telephone, $email, $datesent)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();



/********* END TEST SEND TO DB *****/

        header("Location: /thank-you"); 
    } else {
        //echo 'Mail Error';
        header("Location: /error");

    }

}else{
    //echo 'Validate Error';
    header("Location: /error"); 
}

}else{
    //echo 'Post Error';
    header("Location: /error");
}

function clean($post){
    $remove = array('vin');
    $data = array();

    foreach($post as $key => $value){

        if(in_array($value,$remove)){
            $data[$key] = '';
        }else{
            $data[$key] = $value;
        }
    }

    return array_filter($data);
}

function validate($data){
    $error = array();

    if (!preg_match('/^[^\@]+@.*\.[a-z]{2,6}$/i', $data['email'])) {
      //    $error[] = '1';
    }

    if ((strlen($data['name']) < 1) || (strlen($data['name']) > 32)) {
        //$error[] = '1';
    }

    if ((strlen($data['telephone']) < 10)) {
        $error[] = '1';
        echo 'Please enter 10 digit numbers for telephone number';
    }



    if(isset($data['form'])){
        if($data['form'] == 'quote'){
            if ((strlen($data['address']) < 1)) {
                // $error[] = '1';
            }
        }
    }

    return count($error);
}

?>

我假设姓名、电话、电子邮件和日期都是字符串类型,如果是字符串,请加引号

$sql = "INSERT INTO leads (name, telephone, email, date)
VALUES ('$name', '$telephone', '$email', '$datesent')";

连接php变量和字符串时,用户正确的字符串连接方式

$sql = "INSERT INTO leads (name, telephone, email, date)
VALUES ('".$name."', '".$telephone."', '".$email."', '".$datesent."')";

如果你给我们正确的错误信息,回答就会很容易。谢谢你,维迪亚,那是我犯的错误,我忘记了字符串的引号。非常感谢:)不客气,那么请接受答案:)