Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2016, 23:34   #21
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Внимание на тип данных:
PHP код:
$query "SELECT * FROM `vop` WHERE `id` = '1' "// false

$query "SELECT * FROM `vop` WHERE `id` = 1 "// true 
В контексте MySQL-запросов – это всё глупости.
Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Если она является TEXT то нужно ее обрамлять апострофами
PHP код:
$query "SELECT * FROM `vop` WHERE `id` = '1' "
Если это Integer
PHP код:
$query "SELECT * FROM `vop` WHERE `id` = 1 "
И это тоже.

Умный MySQL вполне способен самостоятельно разобраться с типами данных – и `id` = '1' в запросе отлично сработает.
Это очень легко и просто проверить:
SELECT * FROM `table` WHERE 1 = '1'; вернет все записи из таблицы, несмотря на разность типов в условии.
Как следствие, экранирование кавычками как строковых так и числовых значений является best practice при оформлении MySQL-запросов.
Потому как гораздо проще и удобнее экранировать все подряд значения кавычками – чем морочиться и вспоминать, какой же там тип поля.
Andkorol вне форума Ответить с цитированием
Старый 20.07.2016, 23:48   #22
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Это не совсем так, нужно ставить в соответствии с типом.

Код:
table = tb
--------------------------------
id (int), name (text)
1       , a
2       , b
3       , c
4       , d
Код:
// Если так то все совпадает с тем как вы и говорите

"select * from tb where id = '1' "; // true
"select * from tb where id = 1 ";   // true
Код:
// А если так ? то нет

"select * from tb where name = 'a' "; // true
"select * from tb where name = a ";  // false
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 20.07.2016 в 23:51.
pompiduskus вне форума Ответить с цитированием
Старый 20.07.2016, 23:50   #23
quarty
Форумчанин
 
Аватар для quarty
 
Регистрация: 09.10.2010
Сообщений: 124
По умолчанию

Да причем тут это, мне нужно вот что
Есть две таблицы, в одной ячейке число, у пользователей разные числа
Таблица txt у каждого пользователя свой user_id и число в поле proverka
Вопрос. Как сделать чтоб
$query = "SELECT * FROM vop WHERE `id` =' ' ";
Значение ид бралось из Таблицы txt, определяло пользователя по колонке user_id, определив брало его число из колонки proverka и подставляло его под значение id
quarty вне форума Ответить с цитированием
Старый 21.07.2016, 00:06   #24
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

зачем 2 запроса, да еще и фетчить на клиента, достаточно 1 таблетки
come-on вне форума Ответить с цитированием
Старый 21.07.2016, 00:09   #25
quarty
Форумчанин
 
Аватар для quarty
 
Регистрация: 09.10.2010
Сообщений: 124
По умолчанию

Блин ну так подскажите как правильно пожалуйста
quarty вне форума Ответить с цитированием
Старый 21.07.2016, 00:12   #26
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

нарисуйте таблицы с данными и что должно в результате быть, потому что пока ничего не понятно
come-on вне форума Ответить с цитированием
Старый 21.07.2016, 00:23   #27
quarty
Форумчанин
 
Аватар для quarty
 
Регистрация: 09.10.2010
Сообщений: 124
По умолчанию

https://pp.vk.me/c630121/v630121458/...hkg6ANPWFI.jpg
Вот скриншот, еще раз объясняю
Код:
$query = "SELECT * FROM vop WHERE `id` =' ' ";
Значение id берется из графы proverka, то есть если пользователь с user_id=1, то значение id=1, если пользователь с user_id=4, то значение id=15 и тд.
quarty вне форума Ответить с цитированием
Старый 21.07.2016, 00:33   #28
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Код:
"SELECT vop.* FROM vop 
INNER JOIN txt ON txt.proverka = vop.id
WHERE txt.user_id = ".$_SESSION['user_id']
это будет работать ровно так как вы рассказали
come-on вне форума Ответить с цитированием
Старый 21.07.2016, 00:38   #29
quarty
Форумчанин
 
Аватар для quarty
 
Регистрация: 09.10.2010
Сообщений: 124
По умолчанию

Не работает, var_dump выводит вот что
string(82) "SELECT * FROM vop INNER JOIN txt ON txt.proverka = vop.id WHERE txt.user_id = 4"
quarty вне форума Ответить с цитированием
Старый 21.07.2016, 00:42   #30
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Это не совсем так, нужно ставить в соответствии с типом.
Прочитай ещё раз внимательно то, что я написал.
Как раз чтоб не морочить голову с типами полей – гораздо проще просто экранировать кавычками все данные – не зависимо от того, строка это или число.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Warning: trim() expects Dante5 PHP 10 16.03.2013 02:21
mysql_fetch_array() expects parameter 1 to be resource, boolean given in xew PHP 3 08.10.2011 12:23
Warning: mysql_fetch_array() empireofgods Помощь студентам 1 22.05.2011 13:45
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in.... Andruha10 PHP 13 12.12.2010 00:53