php - 为什么这个不更新数据库中的位置,而另一个则更新

标签 php mysql oop pdo

所以我试图更改引用标题下引用文献的顺序,因为我在一个引用标题下有多个引用文献,但这里的问题是我无法更改它们的顺序。如果我只是将代码直接放入 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);

那么我做错了什么?

最佳答案

好吧,我通过在 refsTable 的末尾添加 `` 这些来修复它,该 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 不喜欢没有这些``引号的引用

关于php - 为什么这个不更新数据库中的位置,而另一个则更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859048/

相关文章:

php - SQL SELECT 与联合子查询的连接返回空和多个结果

c++ - 子对象有一个指向其父对象的指针是不好的做法吗?

php 准备语句 SQLSTATE[42000] : Syntax error or access violation: 1064

php - Laravel - Axois 请求上不存在方法 [orderBy]

php - 为什么for循环处理完后会出现进度条

php - 在 Linux 上使用带有 SMTP 服务器的默认 PHP 邮件功能

javascript - 使用 JavaScript 调用 mysql 数据库查询

java - JVM如何执行继承树结构?

python - 类和变量

php - 如何只读取文本文件的一部分?