在我的测试环境中,即MAMP 4.5,该语句完美无缺。但是当我在我的测试VM上使用相同的语句时,INSERT失败,没有错误。
我用它来捕捉任何错误:
try {
// http://php.net/manual/en/pdo.connections.php
$dbConn = new PDO("mysql:host={$databaseHost};dbname={$databaseName}", $databaseUsername, $databasePassword);
$dbConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Setting Error Mode as Exception
// More on setAttribute: http://php.net/manual/en/pdo.setattribute.php
} catch(PDOException $e) {
echo $e->getMessage();
}
这是我的INSERT声明:
<?php
// Database connection file
include_once("../config.php");
if(isset($_POST['Submit'])) {
$status=$_POST['status'];
$system=$_POST['system'];
$first_name=$_POST['first_name'];
$last_name=$_POST['last_name'];
$primary_num=$_POST['primary_num'];
// Insert data into table
$sql = "INSERT INTO table(
status,
system,
first_name,
last_name,
primary_num
) VALUES(
:status,
:system,
:first_name,
:last_name,
:primary_num
)";
$query = $dbConn->prepare($sql);
$query->bindParam(':status', $status);
$query->bindParam(':system', $system);
$query->bindParam(':first_name', $first_name);
$query->bindParam(':last_name', $last_name);
$query->bindParam(':primary_num', $primary_num);
$query->execute();
// Redirect to the display page
header("Location: index.php");
}
?>
修正:
我将数据库中每列的默认值(主键除外)设置为NULL,现在数据发布成功!
答案 0 :(得分:0)
如果实际上没有抛出异常,您可以尝试打印内部错误信息:
// http://php.net/manual/en/pdostatement.errorinfo.php
$error = $query->errorInfo();
// see if anything is output here
print_r($error);
您在 execute()
来电之前的评论中也提到错误。可能是因为您使用bindparam()
的所有小写名称。
http://php.net/manual/en/pdostatement.bindparam.php
尝试将参数绑定更改为:
$query->bindParam(':status', $status);
$query->bindParam(':system', $system);
$query->bindParam(':first_name', $first_name);
$query->bindParam(':last_name', $last_name);
$query->bindParam(':primary_num', $primary_num);
或者更好;删除上述行并在execute()
调用中设置它们:
$query->execute([
'status' => $status,
'first_name' => $first_name,
'last_name' => $last_name,
'primary_num' => $primary_num,
]);
如果上述信息无效,您是否可以确保启用了错误报告?根据{{3}}上的说明,您可以这样做:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
答案 1 :(得分:0)
删除:在bindParam中
$ query-&gt; bindParam('status',$ status); $ query-&gt; bindParam('system',$ system); $ query-&gt; bindParam('first_name',$ first_name); $ query-&gt; bindParam('last_name',$ last_name); $ query-&gt; bindParam('primary_num',$ primary_num);
答案 2 :(得分:-1)
您是否尝试使用$ GLOBAL ['dbConn']而不是$ dbConn。