Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 56

Запросы к Базе данных с переменными

15.07.2017, 12:17. Показов 692. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, так как я как говорится только учусь, понадобилось мне сделать запросы к бд.
Немного подумав решил что проще всего сделать это на mysqli так как сами запросы можно формировать в phpMyAdmin.
Начиналось все хорошо, к примеру вот так.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 function setResultToarray($result){
    $array = [];
    while ($row = $result->fetch_assoc())
        $array[] = $row;
    return $array;
 }
$mysqli = new mysqli("localhost", "user", "pass", "db"); 
$mysqli->set_charset('UTF8');
if ($mysqli->connect_errno) { 
echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 
echo $mysqli->host_info . "\n"; 
 
$result = setResultToarray($mysqli->query("SELECT * FROM `modx_mse2_intro` WHERE `intro` LIKE '%текст который для поиска%' ")); 
print_r($result);
Все прекрасно работает, выдает и текст что искал и его resource в виде числа.
таблица выглядит так resource(номер) intro(текст) class_key(к чему принадлежит)
Первая проблема возникла с тем как вытащить в переменную число resource?
сделал так
PHP
1
2
$ri = $result[0];
$res = ($riot[resource]);
Матюкается но работает.
И тут возникла главная проблема, как в поиск поместить не текст, а переменную?
В место '%текст который для поиска%'
сделать '%$per%'
Гуглил, по разному, в итоге методом тыка допер до такого
PHP
1
2
$per = '%слова поиска%';
$result = setResultToarray($mysqli->query("SELECT * FROM `modx_mse2_intro` WHERE `intro` LIKE '{$per[0]}' "));
Это единственное что отозвалось. Правда выборку делает не того что искал, а первой позиции в таблице.
В принципе вопрос то и упирается в то как поместить переменную в запросы. Нужно два запроса, поиск и перезаписать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2017, 12:17
Ответы с готовыми решениями:

Замена ссылок и названий фото переменными в базе данных
Здравствуйте. Подскажите пожалуйста. Ниже приведен код html с вставками php переменных. Когда этот код помещен просто как html на...

Запросы в базе данных
Прошу помочь ответить на 3 вопроса 1. Пусть текстовое поле на форме связано с полем Fees из таблицы Clients. Поле Fееs содержит...

Запросы в базе данных
Здравствуйте! Помогите, пожалуйста, правильно составить запрос, который выбирал бы данные из 3 таблиц... У меня есть запрос, который...

5
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.07.2017, 12:26
Цитата Сообщение от winwit Посмотреть сообщение
Матюкается но работает.
Цитата Сообщение от winwit Посмотреть сообщение
Гуглил, по разному, в итоге методом тыка допер до такого
А чтобы не матюкалось и работало, и не методом тыка необходимо знать основы php, в частности работу со строками и ассоциативными массивами. И без твердого знание основ не начинать взаимодействие с бд.
Цитата Сообщение от winwit Посмотреть сообщение
В принципе вопрос то и упирается в то как поместить переменную в запросы.
Для начала надо осознать что sql запрос это просто строка и все опять упирается в незнание основ.
1
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 56
15.07.2017, 13:27  [ТС]
Jewbacabra, То есть я так понимаю сделать вот такую конструкцию?
PHP
1
2
3
4
$resi = 'текст для поиска';
$per["text"]= $resi;
 
$result = setResultToarray($mysqli->query("SELECT * FROM `modx_mse2_intro` WHERE `intro` LIKE '%$per[text]%' "));
и таким образом можно будет передавать в переменную $resi разные значения.

Иди учи, иди учи, так я и учу)))
0
3 / 3 / 0
Регистрация: 11.07.2017
Сообщений: 32
15.07.2017, 13:32
Цитата Сообщение от winwit Посмотреть сообщение
Гуглил, по разному, в итоге методом тыка допер до такого
Рукалицо. Не кажется ли вам что это чрезвычайно плохой метод?
Я конечно не спорю, так тоже можно, но удобней как-то так.
PHP
1
2
3
4
5
6
7
8
9
$sql = mysqli->prepare( "SELECT `id`, `intro` FROM `modx_mse2_intro` WHERE `intro` LIKE ?");
         $sql->bind_param("s", $search_string);
         $sql->execute();
         $sql->store_result();
        if($sql->num_rows === 1) {
          $sql->bind_result($id, $intro);
          $sql->fetch();
         echo $intro;
       }
Да, тут нужно явно указать имена ячеек из которых нужно брать данные, но блин это же удобней когда есть нормальные переменные, а не массив. Это конечно же тоже мое личное мнение.
И да. По хорошему нужно еще добавить проверку сможет ли запрос выполнится, я упростила для наглядности.А так
PHP
1
2
3
4
5
if(!$sql = mysqli->prepare( "SELECT `id`, `intro` FROM `modx_mse2_intro` WHERE `intro` LIKE ?"){
echo "Ошибочка";
}else{
//Продолжаем как я написала выше.
}
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.07.2017, 13:51
Цитата Сообщение от winwit Посмотреть сообщение
PHP
1
2
$resi = 'текст для поиска';
$per["text"]= $resi;
А зачем этот промежуточный массив $per? Почему бы в запрос не подставлять переменную $resi?
0
0 / 0 / 0
Регистрация: 18.01.2017
Сообщений: 56
15.07.2017, 13:54  [ТС]
Jewbacabra, в планах по циклу передавать в $resi значения. Эксперементирую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.07.2017, 13:54
Помогаю со студенческими работами здесь

Запросы к базе данных
Подскажите, пожалуйста. Начал изучать базы данных и C#. Столбец "Специальность". Мне нужно в combox вывести названия всех...

Запросы к базе данных
Здравствуйте, подскажите есть ли пример кода для выполнения sql запросы в netbeans к бд? На "связке" С# и firebird было так...

Запросы к базе данных!
Доброго вечера коллеги. Что есть и как работает: В базе пока 4 таблики связанные друг с другом отнощениями (один к одному т.е....

Запросы к базе данных
Сколько читаю не могу понять. Как мы можем обращаться программно к определенному элементу бд. Например сейчас решил сделать простую форму...

Запросы к базе данных
Всем привет.:) Можно как нибудь с помощью C# взаимодействовать с базой данных сайта? Отправить запрос на добавление новости например


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru