首先这是我的代码:
database.php(已建立连接,以便我可以与 require 一起使用)
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$port = 8889;
$database = "oopdb";
try{
$conn = new PDO("mysql:host=$servername; dbname=$database; port=$port", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec("SET NAMES 'utf8'");
}catch(Exception $e){
echo "Error: " . $e->getMessage();
exit;
}
?>
然后是我的主要 PHP 文件,其形式为:
<!DOCTYPE html>
<html>
<head>
<title>Forms with PDO</title>
</head>
<body>
<?php
require("database.php");
if(isset($_POST['submit'])){
try{
// prepare and bind
$stmt = $conn->prepare("INSERT INTO clients (phonenumber, firstname, lastname, address, note) VALUES (:phonenumber, :firstname, :lastname, :address, :note)");
$stmt->bindParam(':phonenumber', $phonenumber, PDO::PARAM_STR);
$stmt->bindParam(':firstname', $firstname, PDO::PARAM_STR);
$stmt->bindParam(':lastname', $lastname, PDO::PARAM_STR);
$stmt->bindParam(':address', $address, PDO::PARAM_STR);
$stmt->bindParam(':note', $note, PDO::PARAM_STR);
// set parameters and execute
if(isset($_POST['phonenumber'])){ $phonenumber = $_POST['phonenumber']; }
if(isset($_POST['firstname'])){ $firstname = $_POST['firstname']; }
if(isset($_POST['lastname'])){ $lastname = $_POST['lastname']; }
if(isset($_POST['address'])){ $address = $_POST['address']; }
if(isset($_POST['note'])){ $note = $_POST['note']; }
$stmt->execute();
}catch (Exception $e) {
echo "$e";
exit;
}
}
?>
<h2>The Form</h2>
<hr />
<br />
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Number: <input type="text" name="number" value="" />
<br /><br />
First Name: <input type="text" name="firstname" value="" />
<br /><br />
Last Name: <input type="text" name="lastname" value="" />
<br /><br />
Address: <input type="text" name="address" value="" />
<br /><br />
Notes: <input type="text" name="notes" value="" />
<br /><br />
<input type="submit" name="submit" value="Submit">
</form>
<br />
<hr />
</body>
</html>
所以我尝试将表单中的数据插入数据库,但我不断收到此错误:
exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'phonenumber' cannot be null' in /Users/lucasantos/Sites/oop_testing/form.php:32 Stack trace: #0 /Users/lucasantos/Sites/oop_testing/form.php(32): PDOStatement->execute() #1 {main}
真的不明白这是怎么回事,我重新检查了代码并在线检查了错误,但找不到任何相关内容。请帮忙。
一些附加信息:
- 如果重要的话,我会通过 MAMP 在本地主机上执行此操作。
- 我还有一列表示该行的 id,但我没有包含它,因为它设置为自动增量。
谢谢!
最佳答案
我发现您正在使用 html 输入名称,如下所示:
<input type="text" name="number" value="" />
但是在您的 php 代码中,您为电话号码字段使用了不同的名称
// set parameters and execute
if(isset($_POST['phonenumber'])){ $phonenumber = $_POST['phonenumber']; }
将输入字段的 HTML 名称更改为“phonenumber”,看看是否可以解决问题。
关于php - 尝试使用 PDO 将表单数据插入数据库时不断出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232682/