Я не понимаю, почему мой браузер возвращает эту ошибку и почему мой sql не работает.Я пытаюсь решить эту проблему, но я не знаю, как я могу это сделать.
private function getFromDb()
{
$queryBuilder = $this->connection->createQueryBuilder();
$query = $queryBuilder
->select('art1.articleID', 'art1.valueID')
->from('s_filter_articles', 'art1')
->innerJoin('art1', 's_filter_articles', 'art2', 'art1.articleID = art2.articleID')
->where('art1.valueID = 12499')
->andWhere('art2.valueID = 12500');
return $query->execute()->fetchAll();
}
Этот код возвращает этот массив:
array:2 [▼
0 => array:2 [▼
"articleID" => "2225"
"valueID" => "12499"
]
1 => array:2 [▼
"articleID" => "2250"
"valueID" => "12499"
]
]
... и я хотел быудалить ВСЕ этот результат в MySQL.Поэтому я написал этот код:
public function removeFromDb()
{
$result = $this->getFromDb();
foreach ($result as $option) {
$queryBuilder = $this->connection->createQueryBuilder();
$query = $queryBuilder
->delete('s_filter_articles', 's')
->where('articleID = :articleID')
->andWhere('valueID = :valueID')
->setParameter(':articleID', $option['articleID'])
->setParameter(':valueID', $option['valueID']);
return $query->execute();
}
}
НО мой браузер возвращает эту ошибку:
> Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or
> access violation: 1064 You have an error in your SQL syntax; check the
> manual that corresponds to your MySQL server version for the right
> syntax to use near 's WHERE (articleID = '2225') AND (valueID =
> '12499')' at line 1 in
> /var/www/html/strefatenisa.local/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php
> on line 131
> Doctrine\DBAL\DBALException: An exception occurred while executing
> 'DELETE FROM s_filter_articles s WHERE (articleID = ?) AND (valueID =
> ?)' with params ["2225", "12499"]: SQLSTATE[42000]: Syntax error or
> access violation: 1064 You have an error in your SQL syntax; check the
> manual that corresponds to your MySQL server version for the right
> syntax to use near 's WHERE (articleID = '2225') AND (valueID =
> '12499')' at line 1 in
> /var/www/html/strefatenisa.local/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php
> on line 131
РЕДАКТИРОВАТЬ: Если я делаю обычный запрос в моем MySQL, все работает хорошо.
SELECT art1.articleID, art1.valueID
FROM s_filter_articles as art1
INNER JOIN s_filter_articles as art2 ON art1.articleID = art2.articleID
WHERE art1.valueID = 12499
AND art2.valueID = 12500
DELETE FROM `s_filter_articles` WHERE `articleID` = 2225 AND `valueID` = 12499