【问题标题】:Why isn't this updating the positions in the database when the other one does为什么这不更新数据库中的位置而另一个更新
【发布时间】:2020-03-10 13:05:53
【问题描述】:

所以我试图更改我的参考标题下的参考顺序,因为我在一个下有多个,但这里的问题是我无法更改它们的顺序。如果我只是将代码直接放入 phpmyadmin 中,它可以工作,但由于某种原因,它似乎在这里无法正常工作。

我也不知道为什么。我试过 try catch 但它没有给我任何错误

这是我的方法

public function changeHeadingPositions(array $positions) {

    $count = count($positions);

    $return = '';

    for ($i=1; $i <= $count ; $i++) { 
        $sql = 'UPDATE ' . $this->headingsTable . ' SET position = :pos WHERE headingID = :headingID';
        $sql = $this->connect()->prepare($sql);
        $sql->execute(['pos' => $i, 'headingID' => (int)$positions[$i-1]]);

        $return = $return . ' Otsikon ' . $positions[$i-1] . ' sijainti on nyt ' . $i . '<br>';
    }

    return $return;

}

public function changeReferencePositions(array $positions) {

    $count = count($positions);

    $return = '';

    for ($i = 1; $i <= $count; $i++) {
        $sql = 'UPDATE ' . $this->refsTable . ' SET position = :pos WHERE refID = :refID';
        $sql = $this->connect()->prepare($sql);
        $sql->execute(['pos' => $i, 'refID' => (int)$positions[$i-1]]);

        $return = $return . ' Referenssin ' . $positions[$i-1] . ' sijainti on nyt ' . $i . '<br>';
    }

    return $return;
}

这是我用来调用它的代码

declare(strict_types =1);
include 'includes/class-autoloader.inc.php';

$array0 = array(4, 3, 2, 1);

$object = new Reference();
echo $object->changeHeadingPositions($array0);

$array1 = array(5, 4, 3, 2, 1);

echo $object->changeReferencePositions($array1);

那我做错了什么?

【问题讨论】:

  • 所以您是说其中一个功能有效而另一个无效?您是否启用了错误消息以检查是否有任何问题?
  • 是的,它没有给我任何错误:/
  • 哪一个有效?还要检查您的数据库连接是否有$dbh-&gt;setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );,以确保引发错误。

标签: php mysql oop pdo


【解决方案1】:

好的,我通过在 refsTable 的末尾添加 `` 这些来修复它,该表在数据库中被命名为“引用”。

所以现在代码看起来像这样。

public function changeReferencePositions(array $positions) {

        $count = count($positions);

        $return = '';

        for ($i = 1; $i <= $count; $i++) {

            $sql = 'UPDATE `' . $this->refsTable . '` SET position = :pos WHERE refID = :refID';
            $sql = $this->connect()->prepare($sql);
            $sql->execute(['pos' => $i, 'refID' => (int)$positions[$i-1]]);

            $return = $return . ' Referenssin ' . $positions[$i-1] . ' sijainti on nyt ' . $i . '<br>';

        }

        return $return;
    }

似乎 MySQL 不喜欢没有这些``引号的引用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2019-01-03
    • 1970-01-01
    • 2016-04-20
    • 2020-07-25
    • 2016-12-12
    • 1970-01-01
    • 2013-12-27
    相关资源
    最近更新 更多