Warning: mysqli_query() expects parameter 1 to be mysqli, null given in S:\home\test.ru\www\config.php on line 9
Вот Код
<?php
$DataBase = mysqli_connect("localhost", "test", "12345", "test");
function test()
{
$Select = "SELECT base_url FROM base";
$result=mysqli_query($DataBase,$Select);
if ($result)
{
$rows = mysqli_num_rows($result);
for ($i=0; $i<$rows; $i++)
{
$res=mysqli_fetch_assoc($result);
$base_url[$i] = $res["base_url"];
}
mysqli_free_result($result);
}
echo $base_url[0];
}
function get_site_base()
{
$Select = "SELECT base_url FROM base";
$result=mysqli_query($DataBase,$Select);
if ($result)
{
$rows = mysqli_num_rows($result);
for ($i=0; $i<$rows; $i++)
{
$res=mysqli_fetch_assoc($result);
$m_base_url[$i] = $res["base_url"];
}
mysqli_free_result($result);
}
$base_url = $m_base_url[0];
}
?>
Если внести $DataBase = mysqli_connect("localhost", "test", "12345", "test"); в конкретную функцию, то работает нормально. Но не могу же я при вызове каждой функции подключатся к базе. PS "Хотя сейчас так и делаю".
Помогите мне вынести подключения к базе отдельно от функций.
Спустя 8 минут, 35 секунд (6.12.2010 - 17:47) sergeiss написал(а):
Цитата (Tuezov @ 6.12.2010 - 18:38) |
function test() { $Select = "SELECT base_url FROM base"; $result=mysqli_query($DataBase,$Select); |
Там, где нужно, объяви коннект к базе глобальным
function test()
{
global $Database;
$Select = "SELECT base_url FROM base";
$result=mysqli_query($DataBase,$Select);
И кстати - цикл for тут не очень лучший вариант. Во многих случаях выборки из БД удобнее использовать цикл while().
PS. И не понятно, что ты делаешь в функциях: читаешь много данных, а возвращаешь из функции только чуть-чуть.
Спустя 6 минут, 46 секунд (6.12.2010 - 17:54) Tuezov написал(а):
Я сделал. Все равно не получилось.
<?php
$DataBase = mysqli_connect("localhost", "test", "illusions", "test");
function test()
{
global $Database;
$Select = "SELECT base_url FROM base";
$result=mysqli_query($DataBase,$Select);
if ($result)
{
$rows = mysqli_num_rows($result);
for ($i=0; $i<$rows; $i++)
{
$res=mysqli_fetch_assoc($result);
$base_url[$i] = $res["base_url"];
}
mysqli_free_result($result);
}
echo $base_url[0];
}
function get_site_base()
{
global $Database;
$Select = "SELECT base_url FROM base";
$result=mysqli_query($DataBase,$Select);
if ($result)
{
$rows = mysqli_num_rows($result);
for ($i=0; $i<$rows; $i++)
{
$res=mysqli_fetch_assoc($result);
$m_base_url[$i] = $res["base_url"];
}
mysqli_free_result($result);
}
$base_url = $m_base_url[0];
}
Спустя 11 минут, 2 секунды (6.12.2010 - 18:05) Tuezov написал(а):
Мне нужно просто 1 раз подключиться к базе данных и вытаскивать Select- ами из нее данные. Если кто знает, помогите разобраться пожалуйста.
Спустя 1 минута, 2 секунды (6.12.2010 - 18:06) Гость_Dimon написал(а):
global $Database;
Спустя 44 секунды (6.12.2010 - 18:07) sergeiss написал(а):
Ты думаешь, что я так и буду за тобой твой код заключать в тэги оформления на сайте? ;) Тут рядом с полем ввода есть кнопки для этих тэгов (PHP, SQL, HTML), которые позволяют сделать красивый подсвеченный код.
А где у тебя проверка, что подключение БД было успешным? Может быть, в этом проблема?
После коннекта проверь, что получилось:
И про циклы я сказал, а ты так и не сделал.
А где у тебя проверка, что подключение БД было успешным? Может быть, в этом проблема?
После коннекта проверь, что получилось:
var_dump( $Database );
И про циклы я сказал, а ты так и не сделал.
Цитата (Tuezov @ 6.12.2010 - 18:54) |
{ $rows = mysqli_num_rows($result); for ($i=0; $i<$rows; $i++) { $res=mysqli_fetch_assoc($result); $base_url[$i] = $res["base_url"]; } mysqli_free_result($result); } |
Вот этот код лучше заменить на
$base_url=array();
while( $res=mysqli_fetch_assoc($result) )
{
$base_url[$i] = $res["base_url"];
}
И насчет возвращаемых из функций значений все равно не понятно до сих пор....
PS. Гость_Dimon - ценное примечание :)
Спустя 8 минут, 22 секунды (6.12.2010 - 18:15) Гость_Dimon написал(а):
Цитата |
PS. Гость_Dimon - ценное примечание :) |
В смысле? :)
Может я ошибаюсь но
$Database !== $DataBase
Спустя 4 минуты, 30 секунд (6.12.2010 - 18:19) sergeiss написал(а):
Цитата (Гость_Dimon @ 6.12.2010 - 19:15) |
Может я ошибаюсь но ..... |
А я про то и говорю, что ты верно подметил!!! Я вот не заметил, пока ты не сказал. И автор темы тоже только после твоей подсказки это заметил.
Спустя 16 часов, 51 минута, 57 секунд (7.12.2010 - 11:11) Tuezov написал(а):
Хорошо. Можете привести код в котором есть 2 Select к базе данные rows которые записываются в массив с 1 подключением к базе.
Пример
База - test
Таблица - hello
В Таблице hello 3 записиси hello1, hello2, hello3
--------------------------------------------------------
Таблица - poka
В Таблице poka 3 записиси poka1, poka2, poka3
Нада
Подключение к базе 1 раз
Функция 1
{
SELECT hello1, hello2, hello3 для hello
Масиив 1 = hello1; //Все содержимое Hello1
Масиив 2 = hello2; //Все содержимое Hello2
Масиив 3 = hello3; //Все содержимое Hello3
}
Функция 2
{
SELECT poka1, poka2, poka3 для poka
Масиив 1 = poka1; //Все содержимое poka1
Масиив 2 = poka2; //Все содержимое poka2
Масиив 3 = poka3; //Все содержимое poka3
}
Пример
База - test
Таблица - hello
В Таблице hello 3 записиси hello1, hello2, hello3
--------------------------------------------------------
Таблица - poka
В Таблице poka 3 записиси poka1, poka2, poka3
Нада
Подключение к базе 1 раз
Функция 1
{
SELECT hello1, hello2, hello3 для hello
Масиив 1 = hello1; //Все содержимое Hello1
Масиив 2 = hello2; //Все содержимое Hello2
Масиив 3 = hello3; //Все содержимое Hello3
}
Функция 2
{
SELECT poka1, poka2, poka3 для poka
Масиив 1 = poka1; //Все содержимое poka1
Масиив 2 = poka2; //Все содержимое poka2
Масиив 3 = poka3; //Все содержимое poka3
}
_____________
Туезов А.В