2014-12-04 54 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 2014-12-04 14:16:28

回答

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

當固定柱這樣的錯誤編程的學生說,你應該修改你的mysql_query命令: 它需要你之前打開的數據庫連接。

嘗試這種情況:

$結果= mysql_query($ DB_SERVER,$ SQL);

爲什麼不嘗試面向對象的語法?

如果($ db_server->查詢($ SQL)===真){

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

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

}

}

相關問題