【问题标题】:PDO 'LIKE' queryPDO“喜欢”查询
【发布时间】:2010-08-23 23:37:59
【问题描述】:

由于我是使用 PDO 的新手,并且在偏离简单的从查询中选择时遇到了问题,我想我最好在这里问一下。

代码:

  $sDbase = str_replace('`', '', $modx->db->config['dbase']);
  $oPdo = new PDO("mysql:host=localhost;dbname=" . $sDbase . ";",   $modx->db->config['user'], $modx->db->config['pass']);
  $oPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  if(isset($_POST["search"]))
  {
    $sSearch = (!empty($_POST["search"])) ? mysql_real_escape_string($_POST["search"]) : "" ;
  }

  $sSearch = 'beer' ;

  $sQry = <<< QRY
    SELECT
      contentid AS standid
      ,value AS found
      ,pagetitle
      ,published
    FROM 
      modx_site_tmplvar_contentvalues
    RIGHT JOIN
      modx_site_content
      ON
      modx_site_content.id = modx_site_tmplvar_contentvalues.contentid
    WHERE
      ( tmplvarid = 41 OR tmplvarid = 40 )
    AND
      (value LIKE '%:search%'
      OR
      pagetitle LIKE '%:search%')
    AND
      published = '1'
    ORDER BY
      pagetitle
    ASC
QRY;

  $oRes = $oPdo->prepare( $sQry );
  $oRes -> bindParam( ":search", $sSearch );
  $oRes -> execute() ;

  $aRow = $oRes->fetchAll();
  $oRes -> closeCursor();


  var_dump($aRow);

变量$sSearch 是我想在查询中绑定到:search 的变量。对于这个例子,我在其中设置了一个值,但显然我想用一个 POST 变量替换它,这就是我想首先使用 PDO 的原因。

但是,该查询已经用$sSearch 替换为一些搜索值进行了测试,并且可以正常工作,但现在我使用 PDO 执行相同的查询,但我得到一个空白结果。嗯,真的是一个空数组。

那么我在这里错过了什么?

【问题讨论】:

  • 对不起,我的错。已经找到解决方案: $sSearch = '%bier%' ;并重视 LIKE :search 成功了
  • 您能否发表您的评论作为答案,以便我们将其从“未答复”列表中删除?谢谢。

标签: php pdo


【解决方案1】:

根据 Amelia 的评论,答案如下:

$sSearch = '%bier%' ;

value LIKE :search

成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 2012-12-23
    • 2012-09-18
    • 2017-02-21
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多