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