1

Тема: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

public function get_user($id){
            $query = 'SELECT * FROM users where id='.$id;
            $res = mysql_query($query);             
            $row = mysql_num_rows($res);            
            return $row;
        }

Пише Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in...

2

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

Користуйтеся тегом code. Описуйте, що ви робите (завдання). Відповідь на ваше питання, гадаю - "так", але для цього нам недостатньо даних. Наприклад, warning - попередження, на відміну від error - помилка; якщо ви  називаєте попередження помилкою, то це треба якось розписати. І компілятор досить точно пише, від чого воно виникає, що саме вам не зрозуміло?

3

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

olekca01 написав:
public function get_user($id){
            $query = 'SELECT * FROM users where id='.$id;
            $res = mysql_query($query);             
            $row = mysql_num_rows($res);            
            return $row;
        }

Пише Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in...

Пане, навчіться шукати на форумі перш ніж створювати тему

ось приклади схожих проблем
http://replace.org.ua/topic/7635/
http://replace.org.ua/topic/7663/

Подякували: ostap34PHP1

4

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

mike написав:
olekca01 написав:
public function get_user($id){
            $query = 'SELECT * FROM users where id='.$id;
            $res = mysql_query($query);             
            $row = mysql_num_rows($res);            
            return $row;
        }

Пише Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in...

Пане, навчіться шукати на форумі перш ніж створювати тему

ось приклади схожих проблем
http://replace.org.ua/topic/7635/
http://replace.org.ua/topic/7663/

Давні спогади :D

5

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

ost.bregin2014 написав:
mike написав:
olekca01 написав:
public function get_user($id){
            $query = 'SELECT * FROM users where id='.$id;
            $res = mysql_query($query);             
            $row = mysql_num_rows($res);            
            return $row;
        }

Пише Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in...

Пане, навчіться шукати на форумі перш ніж створювати тему

ось приклади схожих проблем
http://replace.org.ua/topic/7635/
http://replace.org.ua/topic/7663/

Давні спогади :D

Ну краще ж вчитись на чужих помилках, правильно?

Подякували: ostap34PHP1

6

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

Мені здається чи вам треба написати так:

$query = "SELECT * FROM `users` where id='$id'";

В мене була така сама ситуація, і я так вирішив :)

Подякували: mike, 221VOLT2

7

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

mike написав:
ost.bregin2014 написав:
mike написав:

Пане, навчіться шукати на форумі перш ніж створювати тему

ось приклади схожих проблем
http://replace.org.ua/topic/7635/
http://replace.org.ua/topic/7663/

Давні спогади :D

Ну краще ж вчитись на чужих помилках, правильно?

Так, але перший ж перший досвід(людина недавно а форумі)

8

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

ost.bregin2014 написав:

Мені здається чи вам треба написати так:

$query = "SELECT * FROM `users` where id='$id'";

В мене була така сама ситуація, і я так вирішив :)

прямо в яблучко

Подякували: ostap34PHP1

9

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

mike написав:
ost.bregin2014 написав:

Мені здається чи вам треба написати так:

$query = "SELECT * FROM `users` where id='$id'";

В мене була така сама ситуація, і я так вирішив :)

прямо в яблучко

Ну, клас перший раз я комусь допоміг(принаймі малоби працювати).

10

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

ще раз наголошу про mysqli_*
(дивіться приклади під спойлером)
http://replace.org.ua/post/93254/#p93254

Подякували: ostap34PHP1

11

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

A ще питання, чому функція, яка в принципі згідно назви мала би повертати юзвера, згідно внутрішньої логіки повертає число?

12

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

Vo_Vik написав:

A ще питання, чому функція, яка в принципі згідно назви мала би повертати юзвера, згідно внутрішньої логіки повертає число?

Бо програміст її криво назвав.

Подякували: ostap34PHP1

13

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

221VOLT написав:

ще раз наголошу про mysqli_*
(дивіться приклади під спойлером)
http://replace.org.ua/post/93254/#p93254

Чому не зручний в більш потужний PDO тоді?

PS: запит вразливий на SQL injection

Подякували: Betterthanyou1

14

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

iovchynnikov написав:
221VOLT написав:

ще раз наголошу про mysqli_*
(дивіться приклади під спойлером)
http://replace.org.ua/post/93254/#p93254

Чому не зручний в більш потужний PDO тоді?

PS: запит вразливий на SQL injection

чим це він потужніший?
який саме запит вразливий на SQL injection ?

Подякували: ostap34PHP1

15

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

221VOLT написав:

ще раз наголошу про mysqli_*
(дивіться приклади під спойлером)
http://replace.org.ua/post/93254/#p93254

Ви як переконувач на цьому форумі :D, навіть я вже перейшов....

16

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

221VOLT написав:
iovchynnikov написав:
221VOLT написав:

ще раз наголошу про mysqli_*
(дивіться приклади під спойлером)
http://replace.org.ua/post/93254/#p93254

Чому не зручний в більш потужний PDO тоді?

PS: запит вразливий на SQL injection

чим це він потужніший?
який саме запит вразливий на SQL injection ?

Цей:

$query = 'SELECT * FROM users where id='.$id; <---
$res = mysql_query($query);

Використовуйте prepared statements або хоча б mysql_real_escape_string($id)

Потужніший хоча б тому що не пов'язаний лише з mysql, підтримує іменовані параметри в prepared statements. https://code.tutsplus.com/tutorials/pdo … -net-24059

Подякували: ostap34PHP, 221VOLT2

17 Востаннє редагувалося 221VOLT (04.02.2017 16:30:17)

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

iovchynnikov написав:
221VOLT написав:
iovchynnikov написав:

Чому не зручний в більш потужний PDO тоді?

PS: запит вразливий на SQL injection

чим це він потужніший?
який саме запит вразливий на SQL injection ?

Цей:

$query = 'SELECT * FROM users where id='.$id; <---
$res = mysql_query($query);

Використовуйте prepared statements або хоча б mysql_real_escape_string($id)

Потужніший хоча б тому що не пов'язаний лише з mysql, підтримує іменовані параметри в prepared statements. https://code.tutsplus.com/tutorials/pdo … -net-24059

а, тут вище в темі...
я думав ви про приклад без препареда в мною наведених прикладах))
зрештою, препаред серед моїх прикладів також, і навіть різницю між ними одразу видно\

хех, особисто мене пдо відштовхує своїм ооп-говностилем (прошу пробачення якщо я ображаю чиюсь віру в релігію ооп -- я більше так не буду [і менше також ні :D ])
зрештою, якщо мені потрібно буде в php щось інше окрім php -- я просто буду використовувати відповідний драйвер, postgresql-драйвер в php також є (втім, з постгресом я працюю з ерланга/еліксира, в php мені вистачає mysql -- немає смислу на ведмедя йти із зубочисткою -- на відповідні задачі потрібно брати відповідні інструменти для вирішення [тут пригадуються даймони на php  :D ])

можете навести приклад використання іменованих параметрів при використанні пдо?
(у чім їх зручність-корисність?)
думаю це буде цікаво не лише мені а й іншим форумчанам) дякую :)

Подякували: ostap34PHP1

18

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

221VOLT написав:
iovchynnikov написав:
221VOLT написав:

чим це він потужніший?
який саме запит вразливий на SQL injection ?

Цей:

$query = 'SELECT * FROM users where id='.$id; <---
$res = mysql_query($query);

Використовуйте prepared statements або хоча б mysql_real_escape_string($id)

Потужніший хоча б тому що не пов'язаний лише з mysql, підтримує іменовані параметри в prepared statements. https://code.tutsplus.com/tutorials/pdo … -net-24059

а, тут вище в темі...
я думав ви про приклад без препареда в мною наведених прикладах))
зрештою, препаред серед моїх прикладів також, і навіть різницю між ними одразу видно\

хех, особисто мене пдо відштовхує своїм ооп-говностилем (прошу пробачення якщо я ображаю чиюсь віру в релігію ооп -- я більше так не буду [і менше також ні :D ])
зрештою, якщо мені потрібно буде в php щось інше окрім php -- я просто буду використовувати відповідний драйвер, postgresql-драйвер в php також є (втім, з постгресом я працюю з ерланга/еліксира, в php мені вистачає mysql -- немає смислу на ведмедя йти із зубочисткою -- на відповідні задачі потрібно брати відповідні інструменти для вирішення [тут пригадуються даймони на php  :D ])

можете навести приклад використання іменованих параметрів при використанні пдо?
(у чім їх зручність-корисність?)
думаю це буде цікаво не лише мені а й іншим форумчанам) дякую :)

Дійсно цікаво :)  *YES*

Подякували: 221VOLT1

19

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

221VOLT написав:
iovchynnikov написав:
221VOLT написав:

чим це він потужніший?
який саме запит вразливий на SQL injection ?

Цей:

$query = 'SELECT * FROM users where id='.$id; <---
$res = mysql_query($query);

Використовуйте prepared statements або хоча б mysql_real_escape_string($id)

Потужніший хоча б тому що не пов'язаний лише з mysql, підтримує іменовані параметри в prepared statements. https://code.tutsplus.com/tutorials/pdo … -net-24059

а, тут вище в темі...
я думав ви про приклад без препареда в мною наведених прикладах))
зрештою, препаред серед моїх прикладів також, і навіть різницю між ними одразу видно\

хех, особисто мене пдо відштовхує своїм ооп-говностилем (прошу пробачення якщо я ображаю чиюсь віру в релігію ооп -- я більше так не буду [і менше також ні :D ])
зрештою, якщо мені потрібно буде в php щось інше окрім php -- я просто буду використовувати відповідний драйвер, postgresql-драйвер в php також є (втім, з постгресом я працюю з ерланга/еліксира, в php мені вистачає mysql -- немає смислу на ведмедя йти із зубочисткою -- на відповідні задачі потрібно брати відповідні інструменти для вирішення [тут пригадуються даймони на php  :D ])

можете навести приклад використання іменованих параметрів при використанні пдо?
(у чім їх зручність-корисність?)
думаю це буде цікаво не лише мені а й іншим форумчанам) дякую :)

Я хотів ще зауважити в "плюсах" (суб'єктивних) що PDO повністю OO але фактично це не є ані плюсом, ані мінусом (об'єктивно). В час коли більшість фреймворків PHP OO, не зовсім кошерно пхати туди процедуральний код (PS: mysqli теж має OO стиль, якщо що).

Приклад був у посиланні:

$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);
     
$pdo->prepare('
    SELECT * FROM users
    WHERE username = :username
    AND email = :email
    AND last_login > :last_login');
     
$pdo->execute($params);

Окрім того що воно виглядає краще і має набагато більше контексту ніж "?", не треба слідкувати за порядком параметрів як у випадку з "?", легше створювати такі запити динамічно.

Плюс у кросплатформенності PDO не у тому, що не треба шукати і обирати драйвер, а у тому що у випадку міграції з того ж mysql на postgresql або msssql, не треба буде змінювати код.

Подякували: ostap34PHP, 221VOLT2

20

Re: Робота з базою: mysql_num_rows() expects parameter 1 to be resource

iovchynnikov написав:

Я хотів ще зауважити в "плюсах" (суб'єктивних) що PDO повністю OO але фактично це не є ані плюсом, ані мінусом (об'єктивно). В час коли більшість фреймворків PHP OO, не зовсім кошерно пхати туди процедуральний код (PS: mysqli теж має OO стиль, якщо що).

Приклад був у посиланні:

$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);
     
$pdo->prepare('
    SELECT * FROM users
    WHERE username = :username
    AND email = :email
    AND last_login > :last_login');
     
$pdo->execute($params);

Окрім того що воно виглядає краще і має набагато більше контексту ніж "?", не треба слідкувати за порядком параметрів як у випадку з "?", легше створювати такі запити динамічно.

Плюс у кросплатформенності PDO не у тому, що не треба шукати і обирати драйвер, а у тому що у випадку міграції з того ж mysql на postgresql або msssql, не треба буде змінювати код.

особисто мені і до ерланга ооп в php(в js частково простіше) зовсім "не заходив", а опісля ерланга -- взагалі...
(тобто для мене це ускладнення - жирний мінус)

дякую за приклад :)
imho зайва змінна/зайвий array зовсім не додає зручності
(яка різниця -- "?" там чи змінна? все-одно за порядком потрібно дивитись -- якщо не зверху то знизу)) )

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

більшість -- ооп? окай) а відколи це більшість -- краща частина?))
якщо дивитись по людях --
багатих - меншість, розумних - меншість, добрих - меншість,,
із взуттям -- також так, як і з багато чим (якщо не з усім)

більшість - не аргумент, а кошерним є те, що корисніше з усіх боків

якщо всі функції роботи з базою є в окремому файлі -- немає жодної проблеми з автозаміною -- один раз Ctrl+C , Ctrl+V і все чудово

втім, pdo все-одно не містить у собі "всі-всі драйвери, які можуть пригодитись",
власне і сама ідея такого драйвера - безглузда, відповідно це також є сумнівною перевагою pdo

Подякували: ostap34PHP1