Не получается с функциями функция подключения к базе данных. connect.php PHP: function connect (){ $dsd = mysqli_connect('localhost', 'root', '', 'dsd'); return $dsd; } index.php PHP: include('connect.php'); connect(); Не подключаюсь. Где ошибка? второй функция . вообще, можно запросы в функцию вставять или каждый раз занаво писать запрос? PHP: function select ($db){ $sql = "SELECT name FROM table1"; $query = mysqli_query($db, $sql); return $query; } select ($db); while($row = mysqli_fetch_array($query)){ ..... }
8 строка упущена переменная, какая ? угадай. --------- зачем писать каждый раз функцию, если запрос другой будет...? учитесь самообучением ?
PHP: $db = mysqli_connect('localhost', 'root', '', 'dsd'); $sql = "SELECT name FROM table1"; $query = mysqli_query($db, $sql); while($row = mysqli_fetch_array($query)){ ..... } вот так будет работать)) Вы передаете в функцию select переменную $db которой у Вас судя по этому коду нет.
если будет повторятся в разных местах тогда уже добавьте и обработку запроса что бы массив получить на выходе из функции))
целиком это выглядит так : connect.php PHP: $db = mysqli_connect('localhost', 'root', '', 'dsd'); index.php PHP: function select ($db){ $sql = "SELECT name FROM table1"; $query = mysqli_query($db, $sql); return $query; } select ($db); while($row = mysqli_fetch_array($query)){ ..... } где не правильно? просивоить функию select () к каконибудь переменно? а потом засунуть её вместо $query ?
да, всё просто - $query = select($db); Я то думал, мне вернет $query из самой функции, но нет, оказывается так не возвращает. Спасибо. --- Добавлено --- теперь вопрос - почему функция подключение не работает? connect.php PHP: $local = 'localhost'; $root = 'root'; $pass = ''; $crm = 'crm'; function connect(){ $db = mysqli_connect($local, $root, $pass, $crm); return $db; } index.php PHP: include('connect.php'); connect(); такой номер типа - $db = connect(); - не проходит. почему не работает? куда смотреть?
не спеши PHP: # одна вселенная $a = 1; function test( $value = '<br>lol' ) # задаем имя переменной для входящих данных + ставим дефолт данные ( необязательно ) { # другая вселенная $a в этой функции не существует. echo $value; # echo и return - две разные вещи } # портал из одной вселенной в другую :) test( $a ); # выйдет 1, так как перекрыли дефолт значение test(); # секретарша даже поймет есть очень много способов от констант до ООП + обвертка чтобы не е** дальше мозг с доступами во вселенной. Один прикол: PHP: $a = 1; $lal = function () use ( $a ) { return $a; }; echo $lal(); Обвертка на PDO: PHP: Class SQL { const HOST = ''; const DB_NAME = ''; const USER = ''; const PASSWORD = ''; const CHARSET = 'utf8'; protected static $INSTANCE = NULL; public static function instance() { if ( self::$INSTANCE === NULL ) { self::$INSTANCE = new PDO( sprintf ( 'mysql:host=%s;dbname=%s;charset=%s', self::HOST, self::DB_NAME, self::CHARSET ), self::USER, self::PASSWORD, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => FALSE, ] ); } return self::$INSTANCE; } public static function __callStatic( $method, $args ) { return call_user_func_array ( [ self::instance(), $method ], $args ); } public static function P( $sql, $args = [] ) { $stmt = self::instance() -> prepare( $sql ); $stmt -> execute( $args ); return $stmt; } }
Офигеть! какая красота! Жаль я совершенно не знаком с ооп и с pdo Я пошел логическим путем и достучался сам , сделал примитивную функцию подключения к базе. на фоне выше написанного мне даже стыдно демонстрировать. Спасибо.
У PDO что пишут: Код (Text): ВАЖНО: Подготовленные выражения - основная причина использовать PDO, поскольку это единственный безопасный способ выполнения SQL запросов, в которых участвуют переменные. http://phpfaq.ru/pdo --- Добавлено --- пару дней тестов и ты повар