-2

我正在尝试将值插入 mysql 数据库,但由于某种原因这不起作用。我可以让它与普通的 PHP 一起工作,但有人告诉我 PDO 使用起来会更安全。这是我使用的代码,值已发布到 php 文件,但未更新到 mysql。这可能是什么原因?

<?php
include 'config.php';

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// new data

$value1 = $_POST["value1"];
$value2 = $_POST["value2"];
$value3 = $_POST["value3"];
$value4 = $_POST["value4"];
// query
$sql = "INSERT INTO `database`.`table` 
(`id`, `value1`, `value2`, `value3`, `value4`, `timeStamp`) 
VALUES (NULL, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; 
$q = $conn->prepare($sql);
$q->execute(array($value1, $value2, $value3, $value4));


?>
4

1 回答 1

-2

更改此行

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

对此

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass, array(PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION));

并使用 try catch on

try
{
    $q->execute(array($value1, $value2, $value3, $value4));
}
catch(Exception $e)
{
   echo $e->getMessage();
   //other code to handle exception for example logging, rollback transaction if exists etc.
}

当您进行这些更改时,将引发 PDO 异常,您将看到问题所在。使用 PDO 异常,您可以做更多的事情来处理错误,例如,如果您使用事务,那么您可以在 catch 块中回滚它。

  1. 您可以将error_reporting(E_ALL);display_errors 与ini_set().

  2. 你也可以使用PDO::errorInfo

手册

PDO::errorInfo — 获取与数据库句柄上的最后一个操作相关的扩展错误信息

要查看示例,请查看此链接

检查这些链接:

于 2013-06-27T06:43:30.180 回答