<?php
$first_rec=0;
$num_rec=20;
$k=0;
$fnd = $_POST['fname'];
do {
$query = "SELECT msg, biography, answer FROM `".$table."` WHERE UPPER(msg) LIKE '$fnd' LIMIT $first_rec, $num_rec";
$result = mysql_query($query) or die("Запрос ошибочный.<br>".$query);
echo "<hr>".$query;
$k=mysql_num_rows($result); //количество строк в результате запроса
if (($first_rec==0)||($k==0)) {echo "<br>Ничего не найдено"; break;}
elseif ($first_rec==0){
echo "<table>\n";
}
while ($line = mysql_fetch_array($result, MYSQL_NUM))
{
echo "\t<tr>\n";
for ($i=0;$i<=2;$i++)
{
if($i==0)
$line[$i]= str_ireplace($_POST['fname'], "<span>".$_POST['fname']."</span>", $line[$i]);
echo "\t\t<td>".$line[$i]."</td>\n";
}
echo "\t</tr>\n";
}
if($k<$num_rec) {
print "</table>\n";
mysql_free_result($result);
}
$first_rec += $num_rec;
} while ($k==$num_rec);
?>
MySQL+Php Find
Из скриптов ничего нормального не нашел.
Fulltext index или LIKE не подходят?
Я составил что-то наподобие этого:
Код:
$query = "SELECT msg, biography, answer FROM `".$table."` WHERE UPPER(msg) LIKE '$fnd' LIMIT $first_rec, $num_rec";
LIKE без шаблонов всё равно, что просто сравнение. Тогда уж так: msg LIKE "%$fnd%"
% = * (любое количество символов от 0),
_ = ? (обязательно один, но любой символ).
- это надо или просто:
msg ?
Цитата:
LIKE '%".strtoupper($fnd)."%'
я делал так. Это верно ?
Цитата: T...H
UPPER(msg)
- это надо или просто:
msg ?
- это надо или просто:
msg ?
Зависит от кодировки таблицы. Если её имя оканчивается на "_ci", то кодировка не учитывает регистр символов, если на "_cs" - надо.
Например: utf8_unicode_[COLOR="Red"]ci[/COLOR] - "case-insensitive"
Код:
я делал так. Это верно?
Если не используешь UPPER(), то strtoupper() можно опустить.
А так да, правильно.
Тут я как-то намудрил, что-то не то я сделал... А вот что неверно не могу понять, (пока)... :(