【问题标题】:INSERT into database not working through PHP插入数据库无法通过 PHP
【发布时间】: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 是假的...

标签: php sql forms sqlite


【解决方案1】:

您的数据库可能存在权限问题,因为代码看起来应该可以工作。检查您是否具有数据库文件的读/写权限。

此外,您应该确保包含数据库文件的文件夹也具有读/写权限,因为文件夹和文件都必须可写才能使 INSERT 工作

【讨论】:

    【解决方案2】:

    我发现您忘记了代码中的一些引号.. 开始尝试:

    $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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 2015-07-11
      相关资源
      最近更新 更多