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

标签 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),
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));
}
?>

我已经通过在表单中​​输入信息然后执行 select * from customers 对其进行了测试。 USstate 完全留空,无论我输入什么,creditNum 总是填写 214748364,而 creditRating 特别为 null。但是,如果我通过普通的 INSERT 语句调用它,一切都会正常输入。哪里出了问题?

最佳答案

creditNum is always filled in with 214748364 no matter what I enter

那么 2147483647(我猜你漏掉了一位数字)是 maximum value对于 SIGNED INT(12)

2147483647...... max SIGNED INT(12)

4012888888881881 example card number

对于信用卡号码,您应该使用 VARCHAR(16) 或更长的时间


关于信用评级问题:

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

关于PHP 表单输入字段无法正确保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442167/

相关文章:

mysql - 在mysql中导出表

mysql - 计算组中的唯一值,并排除 mysql 中已计算的行

php - 根据另一个字段计算一个字段的出现次数

php - 如何传递从url获取的id值并在php中传递

php。需要知道如何区分类别/子类别/产品/页面=

javascript - 优化数组反转变换

php - 如何保护 SQL 密码

php - 一个循环访问两个不同的表

php - 使用带有复选框的 html post 函数

mysql - 在sql查询中显示最小数量的客户端