Перейти к содержанию

Поиск в MySql PHP


Рекомендуемые сообщения

Всем hi! Только начал изучать php и mysql. Итак, есть некоторая БД. Надо организовать поиск в определенном поле. То, что надо искать задается не из формы а из другого скрипта php. Как это сделать? :help:

Ссылка на комментарий
а как то, что задается в другом скрипте попадает в тот, который будет искать?

Это передает ему приложение с десктопа :D . Простым get запросом.

Ссылка на комментарий
простой get запрос сам по себе в базу ничего не кладет, работает PHP скрипт как раз таки.

Это и понятно. Я уже реализовал скрипт который добавить инфу в базу. Сейчас дело за поиском в определенной таблице БД. Как мне передать например строку "ААА0011" из скрипта "incic.php" в скрипт "search.php"?

Добавлено спустя 23 минуты 12 секунд:

А еще конкретней:

Как передать значение переменной из одного скрипта в другой через GET?

Добавлено спустя 20 минут 3 секунды:

Сессии не надо! Я обращаюсь к скрипту приложением, а не браузером.

Ссылка на комментарий

А если я буду юзать curl? Она по умолчанию включена в PHP? Мне не потребуеться дополнительной настройки?

Добавлено спустя 3 минуты 17 секунд:

Или хоть блин, временный файл создавай :dontknow:

Ссылка на комментарий

Ок. Разобрался с передачей параметра. И теперь собственно по сабжу. Значиться подумал что было бы правило сначала поискать через PhpMyAmdin. Ну так вот, задал в определенном поле нужное мне значение и получил:

Выдает только столбец с искомым значением

SELECT  `idboss`
FROM `bossinfo`
WHERE `idboss` LIKE '8BThqpo8yvRB02N'
LIMIT 0 , 30

или выдаст все поле с найденным столбцом

SELECT *
FROM `bossinfo`
WHERE `idboss` LIKE '8BThqpo8yvRB02N'
ORDER BY `bossinfo`.`ipa` ASC
LIMIT 0 , 30

Как мне такой запрос вставить в PHP?

Ссылка на комментарий

Уфф.. закодил блин *89... во как :yahoo: :

<?php
include('connect.php');

$f = fopen("tmp", "r");
// Читать строку их текстового файла и записать содержимое клиенту
$fstr = fgets($f);
fclose($f);

// Формируем запрос
// Это лучший способ выполнить SQL-запрос
// Еще примеры можно найти в документации mysql_real_escape_string()
$query = sprintf("SELECT * FROM `bossinfo` WHERE `idboss` LIKE '8BThqpo8yvRB02N'
ORDER BY `bossinfo`.`ipa` ASC LIMIT 0 , 30");

// Выполняем запрос
$result = mysql_query($query);

// Проверяем результат
// Это показывает реальный запрос, посланный к MySQL, а также ошибку. Удобно при отладке.
if (!$result) {
$message = 'Неверный запрос: ' . mysql_error() . "\n";
$message .= 'Запрос целиком: ' . $query;
die($message);
}
// Используем результат
// Попытка напечатать $result не выведет информацию, которая в нем хранится
// Необходимо использовать какую-либо mysql-функцию, работающую с результатом запроса
// См. также mysql_result(), mysql_fetch_array(), mysql_fetch_row() и т.п.
while ($row = mysql_fetch_assoc($result)) {
echo $row['idboss'];
echo $row['data'];
}

// Освобождаем ресурсы, ассоциированные с результатом
// Это делается автоматически в конце скрипта
mysql_free_result($result);

?>

Добавлено спустя 2 минуты 54 секунды:

Упустил один момент! Как мне в этом запросе:

$query = sprintf("SELECT * FROM  `bossinfo` WHERE  `idboss` LIKE  '8BThqpo8yvRB02N'
ORDER BY `bossinfo`.`ipa` ASC LIMIT 0 , 30");

Вместо 8BThqpo8yvRB02N вставить переменную $fstr ??? Как ни пытаюсь все равно на ее ругается!

Добавлено спустя 2 минуты 26 секунд:

Если делаю так, то скрипт ничего не выводит!


// Формируем запрос
$query = sprintf("SELECT * FROM `bossinfo` WHERE `idboss` LIKE '$fstr'
ORDER BY `bossinfo`.`ipa` ASC LIMIT 0 , 30");

Ссылка на комментарий
Если делаю так, то скрипт ничего не выводит!

{$fstr}

или

... LIKE '".$fstr."' ORDER...

Добавлено спустя 1 минуту 30 секунд:

Не проще готовый шаблон использовать ?

шаблон чего?

Ссылка на комментарий

http://www.php.net/manual/ru/function.sprintf.php

либо используешь sprintf, тогда будет

$query=sprintf("SELECT * FROM `bossinfo` WHERE `idboss` LIKE '%s'

ORDER BY `bossinfo`.`ipa` ASC LIMIT 0 , 30",$fstr);

либо просто

$query="SELECT * FROM `bossinfo` WHERE `idboss` LIKE '".$fstr."'

ORDER BY `bossinfo`.`ipa` ASC LIMIT 0 , 30"

Ссылка на комментарий
достаточно '$fstr'

Не достаточно! Я ж говорю что при таком использовании скрипт ничего не возвращает! Проверил тип переменой, соответствует string. Я так понимаю что надо эту переменную заключить в кавычки... но что-то пока никак. Кстати, а за что в запросе отвечает LIKE ???

Добавлено спустя 2 минуты 14 секунд:

Может сам запрос не верно составлен?

Ссылка на комментарий

Вроде как само за себя говорит LIKE подобный, похожий

Функция производит сравнение с шаблоном, используя операции сравнения простых регулярных выражений в SQL.

Да и в твоем запросе лучше делать оператором сравнения =

$query = sprintf("SELECT * FROM `bossinfo` WHERE `idboss` LIKE = '$fstr' ORDER BY `bossinfo`.`ipa` ASC LIMIT 0 , 30");

Ссылка на комментарий

в переменную $fstr то что пишется? если строка, то там могут быть знаки конца строки. добавь trim($fstr) и LIKE замени на равно как выше написано.

Ссылка на комментарий

LIKE нужно использовать с wildcart "%" (соответствует любому количеству символов).

Примеры (значения поля `idboss`):

Набор данных №1: '1test', 'this is test', 'not a test'

Набор данных №2: 'test string', 'test info', 'test article'

- при использовании '%test' будут найдены записи из набора 1, но не будут найдены записи из набора 2

- при использовании 'test%' будут найдены записи из набора 2, но не будут найдены записи из набора 1

- при использовании '%test%' будут найдены записи из 1 и 2 наборов

- без использования "%" будут найдены только те записи, поле `idboss` в которых равно искомой строке ($fstr)

<?php

mysql_connect('localhost', 'user', 'password');
mysql_select_db('db_name');

$fstr = 'test';

$query = 'SELECT * FROM bossinfo WHERE idboss LIKE "%' . mysql_real_escape_string($fstr) . '%" ORDER BY ipa ASC LIMIT 30';

$res = mysql_query($query);

$results_count = mysql_num_rows($res);

if ($results_count > 0)
{
echo '
';

$row = null;

for ($i = $results_count; $i > 0; --$i)
{
$row = mysql_fetch_assoc($res);

print_r($row);
}
}
else
echo 'No results';

Ссылка на комментарий

Охренеть! :cheer::drink::yahoo: Мужики! Мы справились с этим!!! Запомню навсегда)) Итак, ответ предложенный D_Master сработал четко! Все гуд. Но я взял примеры от СМОК'a и piecemaker'a вкупе дали нужный результат! запрос мой стал таким:

$query = sprintf("SELECT * FROM  `botinfo` WHERE  `idbot` LIKE trim('$fstr')
ORDER BY `botinfo`.`ip` ASC LIMIT 0 , 30");

данные я считывал из файла в конце строки (привык к питону :P ) были не те символы что надо и скрипт "думал" что нет совпадений))

Спасибо вам Огромное!

репу вам уже добавил)) спс!!! :rock:

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...