Поскольку я новичок в использовании 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
на некоторый searchvalue и работает, но теперь я использовал PDO для выполнения одного и того же запроса, и я получаю пустой результат. Ну, пустой массив действительно.
Так что мне здесь не хватает?
Комментарий Пер Амелии, вот ответ:
$sSearch = '%bier%' ;
а также
value LIKE :search
сделал трюк.