如何解决使用PDOPHP在mySQL数据库中插入数字数据
我正在尝试使用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;
解决方法
这里的问题是PHP POST数据是字符串,因此您需要在插入之前进行转换。
<--PDO code-->
<?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 cars (make,model,year,mileage)
VALUES (:make,:model,:year,:mileage)";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
':make' => $_POST['make'],':model' => $_POST['model'],':year' => intval($_POST['year']),':mileage' => intval($_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"/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。