简体   繁体   English

使用regexp + concat编写的语句中的MySQL查询语法问题

[英]MySql query syntax issue within prepared statement with regexp + concat

I am revisiting my old fashion mysql related codes and converting them to prepared statement forms. 我正在重新查看与mysql相关的旧代码,并将其转换为准备好的语句形式。
The query below was working properly. 下面的查询工作正常。

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

After update for prepared statement, my whole code is 更新准备好的语句后,我的整个代码是

$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;}

Error message 错误信息

Parse error: syntax error, unexpected '', ?, '' (T_CONSTANT_ENCAPSED_STRING) in ... on line 2 解析错误:语法错误,在第2行的...中出现意外的'',?,''(T_CONSTANT_ENCAPSED_STRING)

I require your kind help since I couldn't solve my case with even stack-overflowing or googleing. 我需要您的帮助,因为即使堆栈溢出或谷歌也无法解决我的问题。

Thanks 谢谢

BR BR

A syntax-highlighting text editor would help you out here. 语法高亮的文本编辑器将在这里为您提供帮助。

You have " nested inside " . 您已经"嵌套在里面" They need to be escaped like \\" . 他们需要像\\"一样逃脱。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM