2014-12-04 122 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; 

}

}

相关问题