Подключение к mysql

Andrey1812

Новичок
Добрый день.

Учусь писать сайты на пхп и предо мной встала вот такая проблема:
PHP:
function db_connect(){
        $host = 'localhost';
        $user = 'shop_user';
        $pswd = 'admin123';
        $db = 'shop'; 
          
        $connection = mysql_connect($host, $user, $pswd);
        
        if(!$connection || !mysqli_select_db($db, $connection)){
            return false;            
        }
        
        return $connection;       
    } 
    echo(db_connect()); 
    if(db_connect()){
        echo "rgsg";
    }

Короче в $connection содержится Resource id #2
Это по ходу наша БД, при передаче ее и $db в качестве параметров в
PHP:
mysqli_select_db($db, $connection)
ПХП ругается:
Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\Winginx\home\shop\public_html\db _fns.php on line 11 Call Stack: 0.0044 327688 1. {main}() C:\Winginx\home\shop\public_html\db _fns.php:0 0.0045 327688 2. db_connect() C:\Winginx\home\shop\public_html\db _fns.php:17 0.0179 333848 3. mysqli_select_db() C:\Winginx\home\shop\public_html\db _fns.php:11 Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\Winginx\home\shop\public_html\db _fns.php on line 11 Call Stack: 0.0044 327688 1. {main}() C:\Winginx\home\shop\public_html\db _fns.php:0 0.0181 333656 2. db_connect() C:\Winginx\home\shop\public_html\db _fns.php:18 0.0181 333936 3. mysqli_select_db() C:\Winginx\home\shop\public_html\db _fns.php:11
Подскажите пожалуйста, как исправить?

База shop присутствует, значит что-то не так с $connection?
 

Фанат

oncle terrible
Команда форума
mysql_connect
vs.
mysqli_select_db

Выбери что-нибудь одно.
впрочем, выбирать особо не из чего, надо брать mysqli

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

Фанат

oncle terrible
Команда форума
Кстати, спасибо за качественно заданный вопрос, просто-таки образцовый.
Большая часть студентов, поваливших на форум с началом семестра, не могут даже код привести, не говоря уже о сообщении об ошибке.
А этот вопрос - прямо бальзам на душу
 

Andrey1812

Новичок
mysql_connect
vs.
mysqli_select_db
Да, затупил.
Выбери что-нибудь одно.
впрочем, выбирать особо не из чего, надо брать mysqli

плюс к тому нужно обязательно учить английский и по результатам - смотреть в мануале порядок параметров при вызове функции.
Вы имеете в виду, что нужно параметры поменять местами?
PHP:
mysql_select_db($db, $connection)
Тогда ошибка!
Если не менять, то все ОК!
Мануал косячный?
З.Ы. Английский я действительно знаю плохо.

Спасибо за помощь!
 

Фанат

oncle terrible
Команда форума
я имею в виду, что надо читать сообщения об ошибках.
там всё написано.
причём пишет не какой-то хрен с форума, который может и ошибаться 10 раз потому что с похмелья и вообще по жизни невнимательный, а программа.
поэтому всем системным сообщениям об ошибках надо верить больше чем посторонним людям и больше, чем себе.

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

так же я имею в виду, что надо читать документацию.
Не "поменять местами потому что дядя с форума сказал, а зачем - не моего ума дело".
А "прочитать в документации правильный порядок для той конкретной функции, которую я в данный момент использую"
 

Фанат

oncle terrible
Команда форума
Если ты учишься писать сайты на ПХП, то эти два правила - самое важное, что только можно выучить по этой теме:
- читать сообщения об ошибках
- читать документацию по функции, которую собрался использовать.
 

Фанат

oncle terrible
Команда форума
Да, и английский всё-таки обязательно. Хотя бы на уровне сообщений об ошибках.
Это не так сложно, как кажется: многие слова мы знаем, даже не учив язык ни дня.
А некоторые просто похожи на русские.
Warning: mysqli_select_db() expects parameter 1 to be mysqli , string given
но для начала можно воспользоваться словарём
expects - ожидает
parameter - параметр
to be - быть (ту би ор нот ту би знают все, мне кажется)
mysqli - mysqli
string - строка
given - дано, поступило.

mysqli_select_db() ожидала, что будет mysqli, а поступила строка.
Строка у нас лежит в $db.
Это значит, что первым параметром должно быть не имя базы. Параметров у нас только два. Значит - порядок неверный.
вот так, используя сообщение об ошибке и логику, можно обойтись в данном случае и без мануала. Но лучше, все-таки, убедиться.
 

Andrey1812

Новичок
Чесно говоря я не понимаю, почему Вы твердите, что надо использовать
!mysqli_select_db а не !mysql_select_db?

Такой функции в мануале даже нет!

Вот так работает:
PHP:
function db_connect(){
        $host = 'localhost';
        $user = 'shop_user';
        $pswd = 'admin123';
        $db = 'shop'; 
          
        $connection = mysql_connect($host, $user, $pswd);
        if(!$connection || !mysql_select_db($db, $connection)){
            return false;            
        }
        
        return $connection;       
    } 
     
    if(db_connect()){
        echo "rgsg";
    }
 

Фанат

oncle terrible
Команда форума
выкинь его на помойку.
мануал находится по адресу http://php.net
описания функций в нем ищутся гуглем.
поэтому пишем в адресной строке браузера "mysql_select_db", переходим на страницу http://php.net/manual/ru/function.mysql-select-db.php и читаем, что там написано в красной рамочке
 

fixxxer

К.О.
Партнер клуба
А у меня за окном на заборе "х*й" написано, а за ним дрова.

Мануал тут http://www.php.net/docs.php

mysql и mysqli это два разных расширения. Использовать их функции вперемешку нельзя, они несовместимы друг с другом.

mysql_* - устаревшие, mysqli_* - актуальные.
 

Andrey1812

Новичок
Мануал тут http://www.php.net/docs.php
mysql и mysqli это два разных расширения. Использовать их функции вперемешку нельзя, они несовместимы друг с другом.
mysql_* - устаревшие, mysqli_* - актуальные.
Ага, приму к сведению.
Спасибо.

З.Ы. А у меня на заборе написино: "Булка пи**р!" :)
 
Сверху