我是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="joescleanersm@gmail.com" 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();
?>
答案 0 :(得分: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
)
答案 1 :(得分: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)"
答案 2 :(得分:0)
如编程学生所说的固定列错误,你应该修改你的mysql_query命令: 它需要您之前打开的数据库连接。
试试这个:
$ result = mysql_query($ db_server,$ sql);
为什么不尝试使用面向对象的语法?
if($ db_server-&gt; query($ sql)=== TRUE){
header('Location: ../thankyou.php'); } else { echo "Error: " . $conn->error;
}
}