Заменить & - PullRequest
       24

Заменить &

1 голос
/ 19 июня 2019

При запуске следующего кода появляется сообщение об ошибке, в котором говорится, что точка с запятой, которую я использовал в этой строке:

$select_stock->addExpression("REPLACE(b.corporateName, '&', '&')");

для амперсанда, неправильно размещена

InvalidArgumentException:;не поддерживается в строках SQL.Используйте только одно утверждение за раз.

Есть ли другой способ решить эту проблему?

public function c_form_db_2($cName) {
    $select_stock = $this->connection->select('stock', 'a');
    $select_stock->fields('a', ['high', 'low', 'stockname']);
    $select_stock->innerJoin('stockdetails', 'b', 'b.high = a.high');
    $select_stock->condition('a.isCurrentPrice', 'Yes');
    $select_stock->condition('a.isActive', 'Yes');
    $select_stock->condition('b.status', 'Closing');
    $select_stock->addExpression("REPLACE(b.corporateName, '&', '&')");
    $select_stock->escapeLike($cName);
    $select_stock->orderBy('a.tickerId', 'DESC');
    $select_stock->orderBy('a.volId', 'DESC');
    $select_stock_rows = $select_stock->execute()
      ->fetchAll(\PDO::FETCH_ASSOC);
    return $select_stock_rows;
}

1 Ответ

0 голосов
/ 19 июня 2019

Я не знаю Drupal, но я предполагаю, что REPLACE является стандартной функцией MySql, и что Drupal поддерживает их все. В этом случае, если случайно запускает MySql 8 , тогда вместо REPLACE используйте REGEXP_REPLACE и сопоставьте с регулярным выражением & amp. используя подстановочный знак '.' для ';' символ в предположении, что ';' это единственный символ, который когда-либо будет совпадать с подстановочным знаком.

...