【问题标题】:Inserting numeric data in mySQL database using PDO (PHP) [closed]使用 PDO (PHP) 在 mySQL 数据库中插入数字数据 [关闭]
【发布时间】: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


【解决方案1】:

这里的问题是 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"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 2015-10-24
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2017-10-20
    • 2012-11-10
    相关资源
    最近更新 更多