Проверка всей mysql php

How to Check if a Record Exists in a MySQL Database

Almost everyone has been in a circumstance when it is necessary to check whether a record exists in the MySQL database or not.

Let’s look through how to do that with the most suitable and easy command. Below you can find the right command and a common mistake that almost every beginner can make while trying to figure out the problem.

The Correct Command

If you want to check whether a record already exists in your database or not, you should run the following code:

 // connect to database $mysqli = new mysqli("localhost","db_user","db_password","db_name"); $query = "SELECT * FROM products WHERE code = '$code'"; $result = $mysqli->query($query); if ($result) < if (mysqli_num_rows($result) > 0) < echo 'found!'; > else < echo 'not found'; > > else < echo 'Error: ' . mysqli_error(); > // close connection mysqli_close($mysqli); ?>
 $query = "SELECT * FROM products WHERE code = '$code'"; $result = mysql_query($query); if ($result) < if (mysql_num_rows($result) > 0) < echo 'found!'; > else < echo 'not found'; > > else < echo 'Error: ' . mysql_error(); > ?>

A Common Mistake

Now, let’s check out a common mistake that we recommend you to overcome:

 //Will NOT work $query = "SELECT * FROM products WHERE code = '$code'"; $result = mysql_query($query); if ($result) < echo 'found'; > else < echo 'not found'; > ?>

What is MySQL

MySQL is considered an open-source relational database management system. It is aimed at organizing data into one or more data tables.

Several popular applications such as Twitter, Facebook YouTube, Google apply MySQL for data storage purposes. It was initially made for limited usage. Yet, now it is compatible with many essential computing platforms such as macOS, Linux Ubuntu, and Microsoft Windows.

Источник

Тестовое подключение к MySQL из PHP mysqli

Иногда необходимо протестировать работу базы данных, если не удается настроить подключение через сайт или CMS, для этого можно использовать простой PHP скрипт с расширением mysqli.

Скрипт достаточно загрузить в папку вашего сайта и подставить свои значения в файле вместо USER, PASSWORD, BASENAME.

Данный фрагмент кода поможет проверить подключение к базе данных. А также может служить основой для работы с базой данных и выполнения SQL запросов.

 $mysqli = new mysqli('localhost', 'USER', 'PASSWORD', 'BASENAME'); if ($mysqli->connect_error) { die('Ошибка подключения (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } echo '

Соединение установлено. ' . $mysqli->host_info . "

"
; $result = $mysqli->query("SHOW TABLES;"); while ($row = $result->fetch_row()) { echo "

Таблица: "; } echo 'Версия MYSQL сервера: ' . $mysqli->server_info . "\n"; $mysqli->close(); ?>

Пригодился скрипт для тестирования хостинга Namecheap.

Источник

Лучший способ проверить, вернулись ли результаты 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)

Источник

Как правильно проверить нет ли совпадений в базе

Почему собственно спрашиваю: Заметил, что этот запрос не делает выборку по спадению с последним параметром. А это важно. Как правильно проверить наличие совпадений?

Надо проверять по всем столбцам или только по нескольким? Т.е. если только uid совпадает — совпадения есть или нет? И возможно вы хотели такое условие: WHERE (uid = . OR screen_name = . OR domain = . ) AND id_cabinet = . ? Или вместо OR хотели AND (если нужны совпадения по всем параметрам)?

В текущем варианте вы не только проверите существование, но и словите пару замечательных SQL-инъекций

Мне надо проверить нет ли в базе уже данных (пользователя vk) т.е. надо например перебрать все записи с id_cabinet = ‘4’, проверять uid = $uid or screen_name = $who or domain = $who. если допустим хоть одно совпадение нашлось, то ничего не делаем, если же не нашлось, то записываем. Вот щас так поставил: SELECT id FROM test WHERE (uid = $uid or screen_name = $who or domain = $who) and id_cabinet = ‘$id_c’ не знаю правильно или нет. Но потестил записывает если нет записи и когда запись в базе находит, то уже не пишет.

5 ответов 5

Может вам нужна группировка выражений в предикате? Например

$result = mysql_query("SELECT id FROM test WHERE (uid = $uid OR screen_name = $who OR domain = $who) AND id_cabinet = '$id_c'"); if (!mysql_num_rows($result_tracker)) < // если нет то выполняем . >

И еще у вас почему id_cabinet = ‘$id_c’ сравнивается со строкой, у вас id_cabinet не число случаем?

Дополнение

Если у вас $id_c все таки число, то нужно убрать кавычки – id_cabinet = $id_c

У меня в системе есть id кабинета, мне надо взять все записи по id кабинета и прошерстить по ним проверяя есть ли совпадения в полях uid = $uid OR screen_name = $who OR domain = $who если хоть какой-то совпал, то ничего не делаем. мысль такая была. Понятно?

Расставьте скобки в условии. Приоритет AND выше, чем OR. Поэтому когда выпишете без скобок

это равносильно вот такому выражению

То есть если условие A выполнилось, то С уже не влияет на результат, выражение считается истиной.
Если вас это НЕ устраивает, то расставьте скобки сами.

Ну давайте посмотрим на ваш запрос

$result = mysql_query(«SELECT id FROM test WHERE uid = $uid or screen_name = $who or domain = $who and id_cabinet = ‘$id_c'»);

«SELECT id FROM test WHERE uid = $uid or screen_name = $who or domain = $who and id_cabinet = ‘$id_c'» вы не забыли, вы ищете одну строчку!

«SELECT id FROM test WHERE uid = $uid or screen_name = $who or domain = $who and id_cabinet = ‘$id_c’ Limit 1;» С лимитом в разы быстрее выполнится и ваш скрипт не будет бегать по каждой строчке

mysql_num_rows($result_tracker) == 0 Сомневаюсь, как помним в случае не удачи mysql возвращает пустую строчку), в случае удачи SELECT возвращает саму строчку), два запроса сократились) это 1.получение строчки, 2.сравнение есть ли сама строчка.

if($result) есть строчка else нету строчки Сам запрос я разбирать не буду.

Да только щяс заметил Заметил, что это запрос не делает выборку по спадению с последним параметром. Можно сделать еще, сделать сортировку по id в обратную сторону, если нужно получить последнюю строчку, или я нече не понел что вы хотите)

Источник

Читайте также:  Php permission denied www data
Оцените статью