Php как проверить результат запроса

Как проверить результат запроса MySQL в PHP

Вы не выполняете какой-либо запрос. Вы устанавливаете переменную, но не выполняете код.

Кроме того, создавая SQL-запросы с внешними переменными, вы оставляете себя открытым для SQL-инъекций. Кроме того, любые входные данные с одинарными кавычками в нем, такие как имя «O’Malley», взорвут ваш SQL-запрос. Пожалуйста, узнайте об использовании параметризованных запросов, желательно с модулем PDO, для защиты вашего веб-приложения. На моем сайте http://bobby-tables.com/php есть примеры, чтобы вы начали, и этот вопрос содержит много примеров.

Вы выполняете запрос и получаете строку. Если результат этой выборки не пуст, у вас есть действительный пользователь.

Очень важно: вам нужно солить и хешировать свои пароли и использовать подготовленные инструкции, чтобы избежать внедрения sql.

Вы хотите сделать что-то вроде этого:

function emptyQuery($db) // assume $db is your PDO object < // your prepared sql statement with PDO::prepare() $sql = $db->prepare("SELECT 'id', 'username', 'password', 'firstname', 'surename' FROM 'sta177users' WHERE username = ' $_firstName' AND password = '$password' "); // execute it with PDO::execute() $sql->execute(); // return all the rows with PDO::fetchAll(), and then see if the array is empty(). return empty($sql->fetchAll()); > ?> 

Это должно выполнить вашу спецификацию. Вы можете использовать count() для подсчета и т.д.

Конечно, не оставляйте документацию: http://us2.php.net/pdo

$query="SELECT 'id', 'username', 'password', 'firstname', 'surename' FROM 'sta177users' WHERE username = ' $_firstName' AND password = '$password'"; $query->execute(); $rows = $query->fetchColumn(); if($rows == 1)< return true; >else

Ещё вопросы

  • 0 Как вызвать событие $ destroy для уже удаленной области видимости элемента?
  • 0 Обработка списка в C ++: инициализация min первым значением списка
  • 1 Spring data jpa + объединяет 2 таблицы
  • 1 Как добавить проверенный контакт в список Windows Phone 8?
  • 1 Как исправить зависание сборки PhoneGap .apk?
  • 1 Конвертировать категорические признаки (Enum) в H2o в Boolean
  • 1 Добавление объекта в список
  • 1 Plotly / dash — модуль ‘dash_html_components’ не имеет члена ‘Div’
  • 0 MySQL выбирает одно значение из таблицы, если есть два языка [дубликата]
  • 0 Почему эта переменная работает в nav, а не в теге body?
  • 0 Как связать данные из тега ввода html с объектом javascript, используя AngularJS?
  • 0 Как убрать белую рамку
  • 0 выберите строки, которые удовлетворяют где пункт И строки, которые имеют общий ключ
  • 0 инициализировать элементы структуры, используя указатель в C ++
  • 0 У меня есть повторяющееся фоновое квадратное изображение размером 89×89 пикселей, которое я хотел бы изменить на изображение произвольного цвета, когда мышь зависает
  • 1 ImportError: нет модуля с именем textract
  • 0 В mysql Как узнать количество воскресений за месяц
  • 0 Как вставить новую строку в таблицу через angularjs?
  • 1 Как создать библиотеку CHAQUOPY Android (файл .AAR или .JAR) в Android Studio
  • 1 Чем Process.Start отличается от Пуск> Выполнить?
  • 1 Модуль загрузки Javascript ES6 onclick… это можно сделать?
  • 1 Как отладить крюк Кордовы?
  • 0 HTTP-фейсбук в PHP, возвращающий массив, а не JSON
  • 0 Установка значения поля h: inputtext с использованием скрипта jquery
  • 1 Регулярные выражения для добавления классов в HTML-теги
  • 0 QTableWidgetItem другой размер шрифта в одной ячейке
  • 0 удалить дубликаты на левой таблице, сохраняя дубликаты на правой таблице SELECT JOIN
  • 0 Ошибка: недопустимое значение для атрибута x = «NaN» в angularJS nvd3-multi-bar-chart
  • 1 NullPointException и длина массива объектов
  • 0 Появляется ошибка при попытке отобразить данные таблицы MySQL в таблице HTML [дубликаты]
  • 1 Как сделать новый сервлет с помощью мастера?
  • 1 Обнаружить изменения URL в WebView Android
  • 0 как сделать меню полосы прокрутки из нескольких столбцов похожим на таблицу Excel
  • 1 Обновление данных из Vuex дает бесконечный цикл в watcher
  • 1 ошибка при использовании двойной универсальности
  • 1 SVG круговой путь анимации
  • 0 Как всплыть в том же окне?
  • 1 Отделение целочисленных значений от строки
  • 1 Как получить один предмет в пиребазе?
  • 0 Меню jQuery не скрывается при втором нажатии
  • 1 Java — библиотека черчения
  • 1 C # x509Certificate2 не может быть создан
  • 0 Могу ли я создать объект в том же классе?
  • 1 Скользящая средняя по фрейму данных для каждого пользователя. Питон, Панды
  • 0 Учитывая 2D массив, конвертировать в Z-порядок
  • 1 Открытие электронного письма с несколькими вложениями, в то время как выбор ограничен ТОЛЬКО почтовыми приложениями?
  • 1 преобразовать строку даты в дату ISO с часовым поясом
  • 1 Jsoup вики скребок как мне получить оглавление
  • 1 Вызов метода с обратным вызовом в массиве классов ES6
  • 1 Как уменьшить / изменить задержку после сканирования?
Читайте также:  Src image size html

Источник

Как проверить в php результат запроса?

Добрый день.
У меня есть следующий код, который делает выборку из базы по уникальному значению. Я хотел сделать так, что если совпадения в базе есть, то происходит перенаправление на одну страницу, а если нет — возвращает обратно. Пытался проверить через result=true, но что-то не так. в любом случае, даже если совпадений нет, срабатывает первое условие.
Выглядит примерно так:

$SQL = "SELECT * FROM supp WHERE AND sd='$sd'"; $result = mysqli_query($link, $SQL); $post = mysqli_fetch_array($result, MYSQLI_ASSOC); $id = $post['id']; if ($result=true) < header('Location:nt.php?id='.$id.''); >else

Простой 6 комментариев

Compolomus

Kasperenysh

Compolomus

Kasperenysh

FanatPHP

SagePtr

Дмитрий, если запрос вернёт 0 строк, то всё равно тип будет ресурсом. Нужно либо смотреть кол-во строк в выборке, либо запрашивать у БД кол-во строк (SELECT COUNT(*) FROM . WHERE . ), вместо самих строк.

FanatPHP

Как уже сказали в комментариях, результат запроса и данные, которые он вернул — это две разные вещи.
Когда ты лезешь в карман, чтобы узнать, хватит ли тебе на бутылку пива, ты тоже проверяешь не деньги, а карман? Если карман есть, значит и деньги тоже?

Проверять надо не карман, а деньги. Не результат запроса, а строки, которые он вернул. То есть надо просто сделать фетч и вот уже результат фетча проверять в условии. То есть if ($post)

Источник

Лучший способ проверить, вернулись ли результаты MySQL в PHP?

Я ищу лучший способ проверить и посмотреть, были ли какие-либо результаты возвращены в запросе. Я чувствую, что очень часто пишу эту часть кода, а иногда получаю ошибки, а иногда и нет.

Например, я запускаю этот запрос, чтобы проверить, существует ли имя пользователя до вставки нового в базу данных.

$result = mysql_query("SELECT * FROM . "); 

Затем я хочу проверить и посмотреть, были ли возвращены какие-либо результаты. Вот один из способов:

Если первый способ не работает, то иногда это будет:

Тогда я даже увидел, что могу сделать это так на днях:

list($total) = mysql_fetch_row($result); if ($total==0)

Каков наилучший способ сделать это?

Solutions Collecting From Web of «Лучший способ проверить, вернулись ли результаты MySQL в PHP?»

Предполагаемый запрос OP не возвращает никакой ошибки, поэтому это должно быть одним из способов

Один из способов сделать это – проверить, что возвращает mysql_num_rows . Минимальным полным примером будет следующее:

if ($result = mysql_query($sql) && mysql_num_rows($result) > 0) < // there are results in $result >else < // no results > 

Но рекомендуется проверить возвращаемое значение mysql_query и правильно обработать его в случае, если оно false (что было вызвано ошибкой); возможно, также вызвав mysql_error и mysql_error ошибку где-нибудь.

Всякий раз, когда мы выполняем запросы для получения некоторых данных, он возвращается как объект. Затем большинство из нас преобразует его в массив, чтобы легко перебирать строки. В php «empty ()» функция используется для проверки того, является ли массив пустым, т. Е. Если в нем нет данных. Поэтому мы можем проверить, не является ли возвращенное представление массива запроса пустым, делая это

Что более логично, чем тестировать ТИП переменной результата перед обработкой? Это либо тип «boolean», либо «resource». Когда вы используете логический параметр для параметра с mysqli_num_rows, будет генерироваться предупреждение, потому что функция ожидает ресурс.

$result = mysqli_query($dbs, $sql); if(gettype($result)=='boolean') < // test for boolean if($result)< // returned TRUE, eg in case of a DELETE sql echo "SQL succeeded"; >else < // returned FALSE echo "Error: " . mysqli_error($dbs); >> else < // must be a resource if(mysqli_num_rows($result))< // process the data >mysqli_free_result($result); > 

Из всех вышеперечисленных вариантов я бы использовал

проверка на результат, как показано ниже

Это будет верно, если mysql_error возникает так эффективно, если возникла ошибка, вы можете ввести двойное имя пользователя …

Используйте одно с mysql_fetch_row потому что «Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query () возвращает ресурс с успехом или FALSE при ошибке.

Для других типов операторов SQL INSERT, UPDATE, DELETE, DROP и т. Д. Mysql_query () возвращает TRUE при успешном завершении или FALSE при ошибке. «

Обычно я использую === ( тройные равные ) и __LINE__ , __CLASS__ чтобы найти ошибку в моем коде:

$query=mysql_query('SELECT champ FROM table') or die("SQL Error line ".__LINE__ ." class ".__CLASS__." : ".mysql_error()); mysql_close(); if(mysql_num_rows($query)===0) < PERFORM ACTION; >else < while($r=mysql_fetch_row($query)) < PERFORM ACTION; >> в $query=mysql_query('SELECT champ FROM table') or die("SQL Error line ".__LINE__ ." class ".__CLASS__." : ".mysql_error()); mysql_close(); if(mysql_num_rows($query)===0) < PERFORM ACTION; >else < while($r=mysql_fetch_row($query)) < PERFORM ACTION; >> 
$result = $mysqli->query($query); if($result)

это то, как я это делаю, вы могли бы также выбросить еще что-нибудь с умирающим …

Если вы все равно хотите выполнить действие, если $result недействителен:

if(!mysql_num_rows($result)) // Do stuff 

Это будет содержать 0 и false , возвращаемое mysql_num_rows() при ошибке.

mysqli_fetch_array() возвращает NULL если строки нет.

if ( ! $row = mysqli_fetch_array( $result ) ) < . no result . >else

В объектно-ориентированном стиле:

if ( ! $row = $result->fetch_array() ) < . >else

Таким образом, вы проверяете и действуете, если результат положительный, (у вас есть запись в вашей БД, которая соответствует вашему запросу), в противном случае (== 0) вы выполнили действие, когда результат не был задан.

if (mysql_num_rows($result)>0) < PERFORM ACTION >if ($result)

Источник

Как проверить запрос UPDATE прошел удачно или нет?

И остальные запросы к БД как проверять? Может они заголовки какие возвращают, которые можно в if проверить?

Возвращает FALSE в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернет объект mysqli_result. Для остальных успешных запросов mysqli_query() вернет TRUE.

khodos_dmitry: а вы просто сделаете echo mysqli_query(«UPDATE bla bla bla»)

require_once(«DataBase.php»);
$db = DataBase::getDB();
$query = «UPDATE `bets` SET `rate` = ‘1.25’ WHERE `bm_id` = ‘3’ AND `event_id` = ‘1’ AND `type` = ‘1’»;
var_dump($db->query($query));
?>

khodos_dmitry: ааа.. ну все верно. вы используете какую-то стороннюю библиотеку, которая не возвращает данные о результате, но возможно записывает результат в какую-то переменную класса.

if (!($this->mysqli->query(«UPDATE `bets` SET `rate` = ‘$win1’ WHERE `bm_id` = ‘$bm_id’ AND `event_id` = ‘$event_id’ AND `type` = ‘1’»)))
$this->mysqli->query(«INSERT INTO `bets` (`bm_id`, `event_id`, `type`, `rate`) VALUES (‘$bm_id’, ‘$event_id’, ‘1’,’$win1′)») or die(«Не могу вставить коэффициент победы 1: «.$this->mysqli->error);

ThunderCat

khodos_dmitry: в данном случае сделайте var_dump($db), скорее всего в классе есть переменные хранящие ответ запроса, если конечно класс не на коленке писался.

Источник

Оцените статью