它在PDO中是完全合法/有效的语法。(参见脚注)。
但是冒号必须在VALUES()中。
这里真正的问题是$post,它缺少下划线$_post。它是一个超全局:http://php.net/manual/en/language.variables.superglobals.php
错误报告会向您抛出未定义变量通知。
将错误报告添加到文件的顶部,这将有助于查找错误。<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在分段中完成,而绝不应在生产中完成。
另外,确保会话数组设置为空/不为空,并且会话已启动。这在你的帖子里没有显示。
还要确保您的表单确实使用了POST方法,并且您的输入保存了输入的name属性。
例如:
还要检查PDO中的错误:http://php.net/manual/en/pdo.error-handling.php
您的连接方法也不清楚,所以要确保您确实在使用PDO进行连接。不同的MySQLAPI不会混在一起。
其他参考资料:isset()http://php.net/manual/en/function.isset.php
empty()http://php.net/manual/en/function.empty.php
会话:http://php.net/manual/en/session.examples.basic.php
选择API:http://php.net/manual/en/mysqlinfo.api.choosing.php
我可以在PHP中混合MySQLAPI吗?
PHP表单:http://php.net/manual/en/tutorial.forms.php
脚注:
正如评论中所说的那样,沃尔克尔克也是一个不错的发现:
它与前导冒号一起存储在内部,请参阅https://github.com/php/php-src/blob/master/ext/pdo/pdo_stmt.c#L366