【发布时间】:2012-11-22 13:34:05
【问题描述】:
我正在尝试使用 PHP 来遍历搜索词并将它们附加到 SQL 字符串中,然后再进行搜索。但是,由于此代码,该页面无法正常工作:
$sql .= "
WHERE Title
LIKE '%$ss[$i]%'";
这段代码的完整上下文可以在这里看到:
if(isset($_POST['ss'])){
$ss = $_POST['ss'];
$ss = explode(' ',$ss);
$num_search_terms = count($ss);
$sql = "
SELECT *
FROM CRDRecord";
$i = 0;
while($i <= $num_search_terms){
$ssf=
$sql .= "
WHERE Title
LIKE '%$ss[$i]%'";
$i++;
}
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query( $conn, $sql , $params, $options );
$row_count = sqlsrv_num_rows( $stmt );
if ($row_count === false){
echo "Error in retrieving row count.";
}
else {
$jsonData = '{ "num":"Number of records-'.$row_count.',<br><br> search terms being used- <br>search 1- '.$ss[0].'<br>search2- '.$ss[1].'<BR>Number of search terms detected- '.$num_search_terms.'<br>SQL STRING: '.$sql.'" }';
echo $jsonData;
}
}
我知道我想做什么,但不知道如何表达。非常感谢任何帮助。
【问题讨论】:
-
错误?例外?没有数据?究竟出了什么问题以及您尝试解决的问题?
-
我不确定,我没有很好的调试设置。我只是想知道顶部代码的sn-p是否有任何明显错误......
-
试过“回声调试”?这很混乱,但总比没有好。尝试在循环之后回显
$sql。 -
谢谢约翰,这就是我得到的 'SELECT * FROM CRDRecord WHERE Title LIKE '%%' WHERE Title LIKE '%%'检索行数时出错。'
-
好了,现在看看sql字符串,想一想。相信你能很快找到问题所在。如果不是 - 考虑停止正在做的事情并花一些时间学习 SQL,因为错误非常明显。另外,考虑使用PDO