<?php
$queryString = "
SELECT *, MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST ('{$str}' IN BOOLEAN MODE) as score
FROM {$this->modx->config['table_prefix']}linx
WHERE MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST ('{$str}' IN BOOLEAN MODE)
ORDER BY score DESC
";
$result = $this->modx->db->query($queryString);
if (!$result) {
echo __LINE__ . ' : #' . mysql_errno() . ' ' . mysql_error() . '<br />' . $queryString . '<br />';
return FALSE;
}
$rowArray = $this->modx->db->makeArray($result);
<?php
$queryString = "
SELECT *, MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST (:str1 IN BOOLEAN MODE) as score
FROM {$this->modx->getOption('table_prefix')}linx
WHERE MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST (:str2 IN BOOLEAN MODE)
ORDER BY score DESC
";
$criteria = new xPDOCriteria($this->modx, $queryString, array(':str1' => $str, ':str2' => $str));
if (!$criteria->prepare() || !$criteria->stmt->execute()) {
echo __LINE__ . ' : ' . print_r($this->modx->errorInfo(), true) . '<br />' . $queryString . '<br />';
return FALSE;
}
$rowArray = $criteria->stmt->fetchAll(PDO::FETCH_ASSOC);
<?php
$criteria = $this->modx->newQuery('gsLinx');
$criteria->select($this->modx->getSelectColumns('gsLinx'));
$criteria->select("MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST (:str1 IN BOOLEAN MODE) AS score");
$criteria->where("MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST (:str2 IN BOOLEAN MODE)");
$criteria->sortby('score', 'DESC');
$stmt = $criteria->prepare();
$stmt->bindParam(':str1', $str);
$stmt->bindParam(':str2', $str);
<?php
if ($criteria->stmt->execute()) {
$rowArray = $criteria->stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
var_dump($criteria->stmt->errorInfo());
}
<?php
$collection = $this->modx->getCollection('gsLinx', $criteria);
$output = array();
foreach ($collection as $object) {
$output[]= $object->toArray();
}
return implode("<br />", $output);

What am I missing here?
[2011-02-18 12:47:23] (ERROR @ D:\localhost\[mywebsite.com]\core\xpdo\om\xpdoobject.class.php : 235) PHP warning: PDOStatement::execute() [<a href=’pdostatement.execute’>pdostatement.execute</a>]: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
[2011-02-18 12:47:23] (ERROR @ /[mywebsite.com]/www/index.php) Error HY093 executing statement:
Array
(
[0] => HY093
)
<?php
if (!empty($str))
$this->searchString = $str;
############################################################################
# Modified of Jason's:
# https://forums.modx.com/thread/31992/full-text-searching-using-match-against-in-xpdo#dis-post-172945
############################################################################
$c = $this->modx->newQuery('Link');
$c->select($this->modx->getSelectColumns('Link'));
$fields = 'title, url, author, category, level, version, tag, language, summary';
$c->select("MATCH ($fields) AGAINST ('$this->searchString' IN BOOLEAN MODE) AS score");
$c->where("MATCH ($fields) AGAINST ('$this->searchString' IN BOOLEAN MODE)");
$c->where("approved='1'");
$this->_links['count'] = $this->modx->getCount('Link', $c);
$c->sortby("score", "DESC");
if (!empty($limit)) {
$this->_links['limit'] = intval($limit);
} else {
$this->_links['limit'] = $this->config['limit'];
}
$c->limit($this->_links['limit'], $this->_links['limit'] * $this->config['p']);
$links = $this->modx->getCollection('Link', $c);
foreach ($links as $link) {
// ... filling the placeholders here
}
<?php
if (empty($this->searchString))
return FALSE;
$pages = array();
if (!isset($this->_links['count'])) {
$c = $this->modx->newQuery('Link');
$c->select('COUNT(DISTINCT id)');
$c->select("MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST (:str1 IN BOOLEAN MODE) AS score");
$c->where("MATCH(title, url, author, category, level, version, tag, language, summary) AGAINST (:str2 IN BOOLEAN MODE)");
$c->where("approved='1'");
$c->sortby("score", "DESC");
$stmt = $c->prepare(array(':str1' => $this->searchString, ':str2' => $this->searchString));
$this->_links['count'] = 0;
if ($c->stmt->execute()) {
$rows = $c->stmt->fetchAll(PDO::FETCH_COLUMN);
$this->_links['count'] = (integer) reset($rows);
}
}
if ($this->_links['count'] <= $this->_links['limit'])
return FALSE;

$criteria = $this->modx->newQuery('gsLinx');
$criteria->select($this->modx->getSelectColumns('gsLinx'));
$criteria->select("MATCH(title, etc...) AGAINST (:str1 IN BOOLEAN MODE) AS score");
$criteria->where("MATCH(title, etc...) AGAINST (:str2)");
$criteria->sortby('score', 'DESC');
$stmt = $criteria->prepare();
$stmt->bindParam(':str1', $str);
$stmt->bindParam(':str2', $str);
$collection = $this->modx->getCollection('gsLinx', $criteria);
$c = $modx->newQuery('myPackage');
$c->select($modx->getSelectColumns('myPackage'));
$c->where("MATCH (col_1, col_2) AGAINST ('$query')");
$collection = $modx->getCollection('myPackage', $c);