[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP функции и MySQL запросы
wollk
Добрый день, почему данный скрипт не работает:

<?php
$db = mysqli_connect("localhost", "test", "test", "test");
function test_add($test){

mysqli_query($db,"UPDATE user SET post=post+$test WHERE nick='admin'");
}

test_add(10);

?>


НО, стоит мне соединение с БД переместить в тело функции, то работает

<?php
function
test_add($test){
$db = mysqli_connect("localhost", "test", "test", "test");
mysqli_query($db,"UPDATE user SET post=post+$test WHERE nick='admin'");
}

test_add(10);

?>
T1grOK
переменные в фунции и вне функции друг друга "не видят".

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
wollk
Дополнительные коннекты к БД. Изменится ли нагрузка на сервер ?
imbalance_hero
wollk
Надо передавать коннект. Область видимости, первая функция не видит $db, поэтому и происходит беда.
imbalance_hero
$db глобальную сделать, либо передавать её внутрь, либо использовать классы, и обращаться к статичному классу для работы с БД, я у себя сделал через синглтон.
wollk
Раньше, был mysql, там не надо было указывать коннект при каждом запросе. решил перейти на MySQLI - тут надо. Как это исправить ?
imbalance_hero
wollk
Я выше же написал smile.gif
wollk
Я видел, но как сделать $db глобальной не знаю (
wollk
А ,понял global $db;
linker
Либо так
<?php
$db = mysqli_connect("localhost", "test", "test", "test");
function test_add($test)
{
global $db;
mysqli_query($db,"UPDATE user SET post=post+$test WHERE nick='admin'");
}

test_add(10);

?>
либо так
<?php
$db = mysqli_connect("localhost", "test", "test", "test");
function test_add($test, &$db)
{
mysqli_query($db,"UPDATE user SET post=post+$test WHERE nick='admin'");
}

test_add(10, $db);

?>


_____________
Gear Framework
Gear Framework на Github
wollk
Всё, спс разобрался
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.