【问题标题】:PostgreSQL INSERT statement not working in PHP with PDOPostgreSQL INSERT 语句不能在带有 PDO 的 PHP 中工作
【发布时间】:2016-10-29 21:49:56
【问题描述】:

这个让我摸不着头脑。我确定我错过了一些简单的东西,但是对于我的生活,当我将它与我写的其他 INSERT 语句进行比较时,我看不出什么效果很好。在开发者中检查网络选项卡时正在传递参数,但它不会转发到标题中指定的页面,并且在我填写表格时表格没有更新信息。

这是我在模型层写的函数:

function add_yarn($yarnbrand, $yarnamount, $yarnweight, $yarncolor) {
global $db;
$query = 'INSERT INTO yarn
             (yarnbrand, yarnamount, yarnweight, yarncolor)
          VALUES
             (:yarnbrand, :yarnamount, :yarnweight, :yarncolor)';

$statement = $db->prepare($query);
$statement->bindValue(':yarnbrand', $yarnbrand);
$statement->bindValue(':yarnamount', $yarnamount);
$statement->bindValue(':yarnweight', $yarnweight);
$statement->bindValue(':yarncolor', $yarncolor);
$statement->execute();
$statement->closeCursor();
}

这是 index.php 中与该函数关联的操作的控制层:

case 'yarn_add' :
    $yarnbrand = filter_input(INPUT_POST, 'yarnbrand');
    $yarnamount = filter_input(INPUT_POST, 'yarnamount', FILTER_VALIDATE_INT);
    $yarnweight = filter_input(INPUT_POST, 'yarnweight');
    $yarncolor = filter_input(INPUT_POST, 'yarncolor');

    if ($yarnbrand == NULL || $yarnamount == NULL ||
            $yarnweight == NULL || $yarncolor == NULL) {
        echo 'Empty or invalid data input.';
    } else { 
        add_yarn($yarnbrand, $yarnamount, $yarnweight, $yarncolor);
        header('Location: index.php?action=view_yarn');
    }
    break;

这里是添加表单的视图层:

<?php include '../view/header.php'; ?>

<main>
<h1>Add Yarn</h1>
    <form action="index.php" method="post" id="add_yarn_form">
        <input type="hidden" name="action" value="yarn_add">

        <label>Brand:</label>
        <input type="text" name="yarnbrand"> <br>

        <label>Weight:</label>
        <input type="text" name="yarnweight"><br>

        <label>Amount:</label>
        <input type="text" name="yarnamount"><br>

        <label>Color:</label>
        <input type="text" name="yarncolor"><br>

        <label>&nbsp;</label>
        <input type="submit" value="Save Changes"><br>
    </form>
<div class="bottomtext">
    <a href="index.php?action=view_yarn">View Yarns</a>
    <a href="index.php?action=list_supplies">View Supplies</a>
</div>

</main>
<?php include '../view/footer.php'; ?>

感谢您的帮助!

【问题讨论】:

  • “X 不工作”不是开发人员给出的有效问题描述 :) 定义“不工作”...
  • 尝试添加错误检查。尝试使用调试器跟踪代码,并逐行查看发生了什么...
  • 谢谢,我在我的 database.php 文件中设置了错误检查,但什么也没有出现。我将尝试在 Netbeans 中进行调试。
  • 祝你好运..顺便说一句,我真的推荐 PhpStorm 而不是 Netbeans...
  • 好吧,这很奇怪——我停止了这方面的工作,转而去做一些其他的硬件,回来,再次尝试,没有做任何事情,现在它可以工作了。我想也许我的 Postgres 连接休眠了?非常感谢你们的帮助!

标签: php postgresql pdo


【解决方案1】:

也许是一个带有非法字符的变量?您没有在 filter_input 中使用过滤器,这是整数变量所期望的。

看看manual

如果省略,将使用 FILTER_DEFAULT,相当于 FILTER_UNSAFE_RAW。这将导致默认情况下不进行过滤。

不是很安全:/

【讨论】:

    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多