【发布时间】:2020-12-24 23:11:25
【问题描述】:
我正在尝试使用 PHP 数据对象 (PDO) 在 MySQL 数据库中插入字符串(:make 和 :model)和数字(:year 和 :mileage)数据。问题是代码没有在数据库中插入数字数据(我猜原因是代码自动将:year 和 :mileage 数据类型从 int 更改为 str。数据库中的 'year' 和 'mileage' 列表是 INT 类型。)如何更改我的代码以插入 :year 和 :mileage 作为 INT 数据?
//PDO
<?php
$pdo = new PDO('mysql:host=localhost;port=8888;dbname=xxxx',
'xxx', 'xxx');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//SQL
$sql = "INSERT INTO autos (make, model, year, mileage)
VALUES (:make, :model, :year, :mileage)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':make' => $_POST['make'],
':model' => $_POST['model'],
':year' => $_POST['year'],
':mileage' => $_POST['mileage']));
$_SESSION['success'] = 'Record Added';
header( 'Location: index.php' ) ;
return;
?>
<form method="post">
<p>Make:
<input type="text" name="make"></p>
<p>Model:
<input type="text" name="model"></p>
<p>Year:
<input type="number" name="year"></p>
<p>Mileage:
<input type="number" name="mileage"></p>
<p><input type="submit" value="Add New"/>
<!--SQL schema--!>
CREATE TABLE autos (
autos_id INTEGER NOT NULL KEY AUTO_INCREMENT,
make VARCHAR(255),
model VARCHAR(255),
year INTEGER,
mileage INTEGER
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
【问题讨论】:
-
你能显示你的数据库架构吗?并转储 $_POST
-
CREATE TABLE autos ( autos_id INTEGER NOT NULL KEY AUTO_INCREMENT, make VARCHAR(255), model VARCHAR(255), year INTEGER, mileage INTEGER )
-
该表被称为
autos而不是cars,也许这就是问题所在 -
哎呀,对不起:)愚蠢的错误)
标签: php mysql pdo insert integer