我已经连接到数据库了.当我回显所有变量时,它们可以工作,但它们不会插入到我的数据库表中.我的表名正确.这是代码:
<?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();
?>
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
你有一些不匹配的变量.
$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();
?>
Run Code Online (Sandbox Code Playgroud)
然而,此时应更换$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
Run Code Online (Sandbox Code Playgroud)
这将发出一个未定义的变量警告信号.
旁注:错误报告应该只在暂存中完成,而不是生产.
洞察力
正如Ghost所指出的那样:
$datetime格式M d, Y也是可疑的,如果确实如此,它可能搞乱了Y-m-d H:i:s列的格式DATETIME.
因此你可能需要改变
$datetime = date("M d, Y");
Run Code Online (Sandbox Code Playgroud)
至
$datetime = date("Y-m-d H:i:s");
Run Code Online (Sandbox Code Playgroud)
要么
$datetime = date("Y-m-d");
Run Code Online (Sandbox Code Playgroud)
取决于列类型的设置.