PHP表单输入字段将无法正确保存到数据库

PHP表单输入字段将无法正确保存到数据库,php,mysql,Php,Mysql,我用PHP构建了一个表单,它接收数据并将其输入SQL数据库。整个数据库工作正常,系统的其他部分也正常工作。在这种特殊形式中,大多数数据都是输入的。然而,由于没有明显的原因,来自一些特定字段的信息不是。我的表格描述如下: create table customer (custid int auto_increment primary key, fname varchar(30), lname varchar(30), address varchar(30), city varchar(30), U

我用PHP构建了一个表单,它接收数据并将其输入SQL数据库。整个数据库工作正常,系统的其他部分也正常工作。在这种特殊形式中,大多数数据都是输入的。然而,由于没有明显的原因,来自一些特定字段的信息不是。我的表格描述如下:

create table customer
(custid int auto_increment primary key,
fname varchar(30),
lname varchar(30),
address varchar(30),
city varchar(30),
USstate varchar(30),
zip int,
income decimal(15,2),
employment varchar(30),
creditNum int(12),
creditRating decimal(15,2));
表格的代码为:

<?php
$db = new PDO('mysql:host=[hostname];dbname=[dbname];charset=[charname'], 
[username], [password]);
echo '<form action="enterCustomer.php" method="post">';
echo 'First name: <input type="text" name="fname" id="fname" hint="first name"><br>';
echo 'Last name: <input type="text" name="lname" id="lname" hint="last name"><br>';
echo 'Income: $<input type="text" name="income" id="income" hint="income"><br>';
echo 'Employment: <input type="text" name="employment" id="employment" hint="employment"><br>';
echo 'Credit Card: <input type="text" name="creditNum" id="creditNum" hint="credit card"><br>';
echo 'Credit Rating: <input type="text" name="creditRating" id="creditRating" hint="credit rating"><br>';
echo 'Address: <input type="text" name="address" id="address" hint="address"><br>';
echo 'City: <input type="text" name="city" id="city" hint="city"><br>';
echo 'State: <input type="text" name="USstate" id="USstate" hint="state"><br>';
echo 'Zip code: <input type="text" name="zip" id="zip" hint="zip code"><br>';
echo '<input type="submit" name="submit" value="Create Account"><br>';
echo '<a href="assn5main.html">Back</a>';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $fname = trim($_POST['fname']);
    $lname = trim($_POST['lname']);
    $income = trim($_POST['income']);
    $employment = trim($_POST['employment']);
    $creditNum = trim($_POST['creditNum']);
    $creditRate = trim($_POST['creditRating']);
    $address = trim($_POST['address']);
    $city = trim($_POST['city']);
    $USstate = trim($_POST['state']);
    $zip = trim($_POST['zip']);
    $stmt = $db->prepare("INSERT INTO customer(fname,lname,address,city,USstate,zip,income,employment,creditNum,creditRating) VALUES(:fname,:lname,:address,:city,:USstate,:zip,:income,:employment,:creditNum,:creditRating)");
$stmt->execute(array(':fname' => $fname, ':lname' => $lname, ':address' => $address, ':city' => $city, ':USstate' => $USstate, ':zip' => $zip, ':income' => $income, ':employment' => $employment, ':creditNum' => $creditNum, ':creditRating' => $creditRating));
}
?>

无论我输入什么,creditNum总是用214748364填充

2147483647(我猜你漏了一个数字)代表
SIGNED INT(12)

信用卡号应使用
VARCHAR(16)
或更长


关于信用评级问题:

您使用两个变量
$creditRating
$creditRate
。只使用一个

无论我输入什么,creditNum总是用214748364填充

2147483647(我猜你漏了一个数字)代表
SIGNED INT(12)

信用卡号应使用
VARCHAR(16)
或更长


关于信用评级问题:



您使用两个变量
$creditRating
$creditRate
。只使用一个。

查看
;charset=[charname'],
,您只有一个引号。首先,您没有名为“state”的
。你有一个名字叫“USstate”,不过…@junkfoodjunkie我很笨。这就是我尝试这样做并同时通过学习与我的朋友交谈得到的结果。你的变量是混合的:有$creditRate(已设置),然后有$creditRating(未设置),很可能是空值的原因。查看execute语句的最后一个参数。@TurboPT…直到大约一分钟前,我都会上下发誓你错了,我从来没有在整个程序中写过“creditRating”,这是经过反复检查后得出的结论。在读了这篇文章之后,我又做了第三次检查。该死的。谢谢看看
;charset=[charname'],
,您只有一个引号。首先,您没有名为“state”的
。你有一个名字叫“USstate”,不过…@junkfoodjunkie我很笨。这就是我尝试这样做并同时通过学习与我的朋友交谈得到的结果。你的变量是混合的:有$creditRate(已设置),然后有$creditRating(未设置),很可能是空值的原因。查看execute语句的最后一个参数。@TurboPT…直到大约一分钟前,我都会上下发誓你错了,我从来没有在整个程序中写过“creditRating”,这是经过反复检查后得出的结论。在读了这篇文章之后,我又做了第三次检查。该死的。谢谢哎呀。这是一个解决方案。这就是我在一个学期没有使用PHP/SQL之后回到PHP/SQL的原因,我想。@Jacob我很高兴这对我有所帮助。请回答我接受的答案,这样其他人就会知道你不需要进一步的帮助。好吧,这当然有帮助,但它不是完全固定的。creditRating仍然为空,尽管我试图填写它。@Jacob关于信用评级,您有两个变量混淆了
$creditRate
$creditRating
。哎呀。这是一个解决方案。这就是我在一个学期没有使用PHP/SQL之后回到PHP/SQL的原因,我想。@Jacob我很高兴这对我有所帮助。请回答我接受的答案,这样其他人就会知道你不需要进一步的帮助。好吧,这当然有帮助,但它不是完全固定的。creditRating仍然为空,尽管我试图填写它。@Jacob关于信用评级,您有两个变量混淆了
$creditRate
$creditRating
2147483647...... max SIGNED INT(12)

4012888888881881 example card number