我已经连接到数据库。当我回显所有变量时,它们都起作用,但它们不会插入到我的数据库表中。我把桌子的名字记对了。这是代码:
<?php
$pid = '1';
$pname = 'name';
$poster_id = '2';
$poster_name = 'name2';
$message = 'This is the message';
$datetime = date("M d, Y");
// insert into database
$ins = "INSERT INTO messages (profile_id, profile_name, poster_id, poster_name, message, countnum, postdate) VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $con->prepare($ins);
$num = 1;
$stmt->bind_param('isissis', $pid, $pname, $user_id, $user, $comment, $num, $datetime);
$stmt->execute();
?>
感谢您提前提供的帮助。
您有一些变量不匹配。
$poster_id
-$poster_name
-$message
与您的绑定对齐并处于绑定中:
$user_id, $user, $comment
现在应该可以了:
<?php
$pid = '1';
$pname = 'name';
$poster_id = '2';
$poster_name = 'name2';
$message = 'This is the message';
$datetime = date("M d, Y");
// insert into database
$ins = "INSERT INTO messages (profile_id, profile_name, poster_id, poster_name, message, countnum, postdate) VALUES (?, ?, ?, ?, ?, ?, ?)";
$stmt = $con->prepare($ins);
$num = 1;
$stmt->bind_param('isissis', $pid, $pname, $poster_id, $poster_name, $message, $num, $datetime);
$stmt->execute();
?>
然而,您应该将$stmt->execute();
替换为if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}
以便捕捉错误。
此外,将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
这将发出未定义变量警告的信号。
旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。
洞察
正如Ghost所指出的:
$datetime
格式M d, Y
也是可疑的,如果确实是这样的话,它可能会破坏Y-m-d H:i:s
的列DATETIME
的格式。
因此,您可能需要更改
$datetime = date("M d, Y");
至
$datetime = date("Y-m-d H:i:s");
或
$datetime = date("Y-m-d");
取决于您的列类型设置为什么。