Неможливо підключитися до бази даних всередині функції php

у мене є файл PHP, в якому я підключаюся до своєї бази даних і отримую свої значення,

<?
  $dbconn = mysqli_connect(..,..,..);
  $query = ...
  $result = ...
  ...
?>

все велике з цим кодом, але коли я ставлю блок всередині функції PHP, я не можу отримати мої цінності (виклик процедури не може бути виконаний), я намагаюся це: \ t

<?
     $dbconn = mysqli_connect(...,...,...);
     function drawTable()
    {
       $query = ...
       $result = ...
       ....
    }
   drawTable();


?>
1
Вам потрібно визначити $ query і $ result з функції?
додано Автор Sandeep Bansal, джерело
Якщо б ви показували код, а не "...", ми б знали, що це проблема сфери.
додано Автор symcbean, джерело
запит не повинен знаходитися всередині функції, coz кожен раз, коли я викликаю цю функцію, піде і отримаю мої дані з бази даних
додано Автор Grace, джерело

3 Відповіді

Це пояснюється тим, що в області функцій зовнішні змінні не видно.

Ви можете досягти змінної $ dbconn, зробивши її глобальною, або передавши її як аргумент.

global $dbconn; 
$dbconn = mysqli_connect(...,...,...);
function drawTable()
{
   global $dbconn;
   $query = ...
   $result = ...
   ....
}
drawTable();

або

 $dbconn = mysqli_connect(...,...,...);
 function drawTable($dbconn)
{
   $query = ...
   $result = ...
   ....
}
drawTable($dbconn);
3
додано
Спробуйте отримати додаткові підказки, замінивши die ("Не вдається виконати вибір запиту -". Mysqli_error ()) з die ("Не вдається виконати вибір запиту:". Var_export ($ query, true)), оскільки на ваш запит може впливати функцію області, якщо ви використовуєте інші змінні для її побудови.
додано Автор Skrol29, джерело
Крім того, додайте код error_reporting (E_ALL || E_STRICT), щоб переконатися, що ви ловите всі помилки PHP, такі як незмінна змінна.
додано Автор Skrol29, джерело
Вони не працюють, дайте мені знати, якщо у мені потрібно, щоб відправити код, спасибі багато
додано Автор Grace, джерело

Спосіб 1: доступ до глобального $ dbconn .

$dbconn = mysqli_connect(...,...,...);
function drawTable()
{
    global $dbconn;
    $query = ...
    $result = ...
    ....
}
drawTable();

Спосіб 2: передати $ dbconn як параметр.

$dbconn = mysqli_connect(...,...,...);
function drawTable($dbconn)
{
    $query = ...
    $result = ...
    ....
}
drawTable($dbconn);
0
додано
Опишіть "не працює" і дайте повідомлення про помилку, якщо у вас є.
додано Автор xdazz, джерело
@Grace ТАК Ваш запит неправильний, чи не так?
додано Автор xdazz, джерело
@Grace Що говорить mysqli_error() ?
додано Автор xdazz, джерело
Будь ласка, напишіть весь ваш код. Використовуйте mysqli_error ($ dbconn) ;
додано Автор xdazz, джерело
Вони не працюють, дайте мені знати, якщо у мені потрібно, щоб відправити код, спасибі багато
додано Автор Grace, джерело
Я маю цей код: $ result = mysqli_query ($ dbconn, $ query) або die ("Не вдається виконати вибір запиту -". Mysqli_error ()); і помилка i get: це неможливо виконати вибраний запит -
додано Автор Grace, джерело
без функції частина (як я описав в моєму пості) мій запит працює відмінно, але коли їм виклик всередині моєї функції нічого не отримав
додано Автор Grace, джерело
нічого, рядок emtpy
додано Автор Grace, джерело

Якщо ви використовуєте змінну $ dbconn всередині функції, вона буде невдалою, оскільки вона не відповідає правильній області. Передайте змінну $ dbconn у функцію, щоб вона могла використовувати її.

0
додано
Більше код допоможе. Опублікуйте оновлений код, щоб ми могли бачити проблему
додано Автор JohnP, джерело
Вони не працюють, дайте мені знати, якщо у мені потрібно, щоб відправити код, спасибі багато
додано Автор Grace, джерело
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php