【发布时间】:2013-08-24 19:26:47
【问题描述】:
我的服务器上的 php 文件中有以下代码,它应该从 HTML 表单中获取简单的 POST 输入并将其存储在数据库中。
$var_name = $_POST[post_name];
$var_email = $_POST[post_email];
$var_id = intval($_POST[post_id]);
echo "Name=".$var_name.", email=".$var_email.", id=".$var_id;
$status = $db->query("insert into names (name, email, id) values ('$var_name', '$var_email', $var_id)");
var_dump($status);
所有的 POST 变量都是正确的,它们都存储了我在表单中输入的数据,并且db 肯定设置正确,因为运行以下代码按预期工作,打印出数据库中的每一行:
$results = $db->query('SELECT * FROM names');
while ($name = $results->fetchArray())
echo $name[0]."\n";
发生的情况是,var_dump($status) 证明 $status 是假的。怎么可能是假的?我究竟做错了什么?将查询行插入 sqlite3 CLI 效果很好,所以我看不出有什么问题。谢谢
【问题讨论】:
-
将您的查询放入一个变量中并 var_dump 。 $sql = "插入名称 (name, email, id) 值 ('$var_name', '$var_email', $var_id)"。在查询方法中使用相同的变量。这样可以确保查询正确
-
你的数据库的错误报告说什么?如果您使用的是 PDO,则可以使用
var_dump($query->ErrorInfo())访问它 -
永远不要写这么危险的代码。从第一天开始就使用准备好的语句,永不回头:php.net/manual/en/pdo.prepared-statements.php
-
查询是:>.. 这没什么问题,但还是能说明问题我说 $status 是假的...