2014-12-17 3 views
0

Я использую персонализированную почтовую форму и данные отправляются по электронной почте в соответствии с приведенным ниже кодом. Однако мой оператор insert в DB не работает. И таблица, называемая «ведет» в моей БД, по-прежнему пуста. я довольно много следовали примеру из: http://www.w3schools.com/php/php_mysql_insert.asp Любые указатели будут оценены, чтобы получить эту SQL вставить работу,Вставить поля формы в DB

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

$to = '[email protected]'; 

$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('/^[^\@][email protected]*\.[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); 
} 

?> 
+2

любая ошибка .. ??? –

+0

будет легко ответить, если вы сообщите нам свое правильное сообщение об ошибке – Naeem

ответ

1

Я полагаю, имя, телефон, адрес электронной почты, дата и строковых типов, поставить кавычки, если его строка

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

Спасибо, Видья, это была ошибка, которую я совершил, я забыл кавычки для строк. Большое спасибо :) – Michel

+0

добро пожаловать, тогда, пожалуйста, примите ответ :) –

0

Правильный способ конкатенации строк при конкатенации переменной php и строки.

$sql = "INSERT INTO leads (name, telephone, email, date) 
VALUES ('".$name."', '".$telephone."', '".$email."', '".$datesent."')"; 
Смежные вопросы