2014-12-04 4 views
1

Я новичок в PHP. Я собрал простую форму для ввода данных в базу данных, но данные, похоже, не вставляются в базу данных. Я пытался заставить его работать весь день. показывает ошибку Ошибка вставки в базу данных в конце кода.Ошибка при попытке вставить в базу данных данные. Простая форма


HTML


<div id="wrapper"> 

     <section id="top_area"> 

      <article class="box-right"> 

        <form action="script/data.php" method="post"> 

         <p> 
          <label>Company Name:</label> 
          <input name="company_name" required="required" placeholder="Joes Cleaners" type="text"> 
         </p> 

         <p> 
          <label>Ref:</label> 
          <input name="ref_num" required="required" placeholder="D123" type="text"> 
         </p> 

         <p> 
          <label>Website:</label> 
          <input name="website" required="required" placeholder="joescleaner.co.uk" type="text"> 
         </p> 

         <p> 
          <label>Email:</label> 
          <input name="email" required="required" placeholder="[email protected]" type="email"> 
         </p> 

         <p> 
          <label>Telephone:</label> 
          <input name="tel" required="required" placeholder="0712345678" type="number"> 
         </p> 

         <p> 
          <label>Message:</label> 
          <input name="message" required="required" placeholder="hello" type="text"> 
         </p> 



         <p> 
          <input value="Submit" type="submit"> 
         </p>  

        </form> 

      </article> 

     </section> 

    </div> 

PHP


<?php 
$db_hostname = 'localhost'; 
$db_database = 'form'; 
$db_username = 'user'; 
$db_password = 'password'; 

// Connect to server. 
$db_server = mysql_connect($db_hostname, $db_username, $db_password) 
    or die("Unable to connect to MySQL: " . mysql_error()); 

// Select the database. 
mysql_select_db($db_database) 
    or die("Unable to select database: " . mysql_error()); 

// Select the database. 
mysql_select_db("form") 
    or die("Unable to select database: " . mysql_error()); 

// Get values from form 
$company_name  = $_POST['company_name']; 
$ref_num  = $_POST['ref_num']; 
$website  = $_POST['website'];  
$email  = $_POST['email']; 
$tel = $_POST['tel']; 
$message = $_POST['message']; 



// Insert data into mysql 
$sql="INSERT INTO users (company_name, ref_num, website, email, tel, message) 
VALUES ('$company_name', '$ref_num', '$website', '$email', $tel, $message, NOW())"; 
$result = mysql_query($sql); 

// if successfully insert data into database, displays message "Successful". 
if($result){ 
header('Location: ../thankyou.php'); 
} 
else { 
echo "Error to Inserting into database"; 
} 

// close mysql 
mysql_close(); 
?> 
+3

Это не очень хорошая идея, чтобы вставить сырец пользователя данных в базу данных. Ваш запрос sql может быть введен или сломан с простой цитатой в любом поле.Читайте о подготовленных заявлениях. Конечно, функции mysql_ * устарели. Вместо этого используйте PDO или, по крайней мере, mysqli_ *. – Panoptik

ответ

0

Вы должны начать использовать PDO для доступа к БД, mysql_query устарел.

PDO давайте сделаем подготовленные заявления. Они защищены от SQL-инъекций (ваш код не является).

$stmt = $dbh->prepare("INSERT INTO users (company_name, ref_num, website, email, tel, message) VALUES (:company_name, :ref_num, :website, :email, :tel, :message, NOW())"); 
$stmt->bindParam(':company_name', $company_name); 
$stmt->bindParam(':ref_num', $ref_num); 
// And bind the remaining parameters 
[...] 
$stmt->execute(); 

Если это не удается, вы можете получить подробную информацию, запустив

print_r($stmt->errorInfo()); 

Это должно помочь вам с поиском ошибок в SQL.

$dbh новый экземпляр PDO (см PDO::__construct)

0

Как в запросе вы пытаетесь вставить больше значений столбцов. Ваш запрос:

$sql="INSERT INTO users (company_name, ref_num, website, email, tel, message) VALUES ('$company_name', '$ref_num', '$website', '$email', $tel, $message, NOW())" 

Либо удалите NOW() данные или добавить еще один столбец для NOW() данных

Также вы можете попробовать ниже запрос.

$sql="INSERT INTO users (company_name, ref_num, website, email, tel, message) VALUES ('$company_name', '$ref_num', '$website', '$email', $tel, $message)" 
0

Когда исправлены ошибки столбцов, как говорит Программирование Student, вы должны изменить вашу команду mysql_query: это необходимо подключение к базе вы открыли раньше.

Попробуйте это:

$ Result = mysql_query ($ db_server, $ SQL);

Почему бы не попробовать объектно-ориентированный синтаксис?

если ($ db_server-> запрос ($ SQL) === TRUE) {

header('Location: ../thankyou.php'); } else { 

echo "Error: " . $conn->error; 

}

}

Смежные вопросы