Проблема синтаксиса запроса MySql в подготовленном операторе с regexp + concat

Я пересматриваю свои старые коды, связанные с MySQL, и преобразовываю их в подготовленные формы операторов.
Запрос ниже работал правильно.

$sorgu = "SELECT * FROM tb_yazilar WHERE kolon_etiketler REGEXP '[[:<:]]".$adres_get_elemanlari[2]."[[:>:]]' ORDER BY kolon_sno DESC";

После обновления для подготовленного оператора весь мой код

$sorgum = "SELECT kolon_yazar, kolon_baslik, kolon_ytarihi FROM tb_yazilar WHERE kolon_etiketler REGEXP CONCAT('[[:<:]]"', ?, '"[[:>:]]') AND kolon_statu = ? ORDER by kolon_onaytarihi DESC";

if ($beyan = $db_baglanti->prepare($sorgum)) 
{
    /* bind parameters */
    $beyan -> bind_param("ss", $bindparametre1, $bindparametre2);

    /* assign values to bind parameters */
    $bindparametre1 = tire_bosluk_olsun($_GET['rd_ozne']);
    $bindparametre2 = 'onay';

    /* execute statement */
    $beyan->execute();

    /* bind result variables */
    $beyan->bind_result($yazar, $baslik, $ytarihi);

echo "\t".'<div class="sol-icerik-kapsar">'."\r\n";
echo "\t\t".'<h1>'.$_GET['rd_ozne'].'İLE ETİKETLENDİRİLMİŞ YAZI(LAR)</h1>'."\r\n";
echo "\t\t".'<ul>'."\r\n";
    /* fetch values */
    while ($beyan->fetch()) 
    {
        echo "\t\t\t".'<li>'.'<a href="'.sitenin_koku.'yazılar/'.bosluklar_tire_olsun($yazar).'/'.bosluklar_tire_olsun(noktalamasiz($baslik)).'">'.$baslik.'</a>'.' - '.turkcetarih('j F Y',$ytarihi).'</li>'."\r\n";
    }
echo "\t\t".'</ul>'."\r\n";
echo "\t".'</div>'."\r\n";  
    /* close statement */
    $beyan->close();
}
else {echo "Hazırlama hatası: (" . $db_baglanti->errno . ") " . $db_baglanti->error;}

Сообщение об ошибке

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное '', ?, '' (T_CONSTANT_ENCAPSED_STRING) в ... в строке 2

Мне нужна ваша помощь, так как я не смог решить свою проблему даже с переполнением стека или гуглить.

Спасибо

BR


person Andre Chenier    schedule 25.03.2013    source источник
comment
$sorgum = ВЫБРАТЬ kolon_yazar, kolon_baslik, kolon_ytarihi FROM tb_yazilar ГДЕ kolon_etiketler REGEXP CONCAT('[[:‹:]]', ?, '[[:›:]]') И kolon_statu = ? ЗАКАЗАТЬ по kolon_onaytarihi DESC;   -  person Andre Chenier    schedule 25.03.2013


Ответы (1)


Здесь вам поможет текстовый редактор с подсветкой синтаксиса.

У вас есть ", вложенный в ". Их нужно экранировать, как \".

$sorgum = "SELECT kolon_yazar, kolon_baslik, kolon_ytarihi FROM tb_yazilar WHERE kolon_etiketler REGEXP CONCAT('[[:<:]]\"', ?, '\"[[:>:]]') AND kolon_statu = ? ORDER by kolon_onaytarihi DESC";
person Joe Frambach    schedule 25.03.2013
comment
моя синтаксическая ошибка исчезла, но теперь я не могу получить никакого значения из моей таблицы MySql. Также нет уведомлений, предупреждений или ошибок. Что мне делать, чтобы понять причину НЕТ ДАННЫХ от mysql? Я уверен, что назначенные значения для параметров привязки верны и существуют в моей связанной таблице. BR - person Andre Chenier; 25.03.2013
comment
Проверьте свой журнал запросов mysql, чтобы увидеть, что именно было запущено. dev.mysql.com/doc/refman/5.1/en/ запрос-log.html - person Joe Frambach; 25.03.2013
comment
спасибо, но я не мог понять после прочтения ссылки, которой вы поделились. Я на бесплатном сервере и MySql версии 5.1.61. - person Andre Chenier; 25.03.2013
comment
Если вы можете использовать что-то вроде phpmyadmin, вы можете запустить show processlist во время выполнения вашего оператора, и это должно показать полный результирующий запрос. - person Joe Frambach; 25.03.2013