Не ўдаецца падключыцца да базы дадзеных у функцыі PHP

У мяне ёсць PHP-файл, у якім IM падлучаючы да базы дадзеных і атрымаць мае каштоўнасці,

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

усе выдатна з гэтым кодам, але калі ім пакласці блок ўнутры функцыі PHP, я не можа атрымаць мае каштоўнасці (заклік да працэдуры не змог быць выкананы), ім спрабуе гэта:

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


?>
1
Вам трэба вызначыць $ запыт і $ вынік з функцыі?
дададзена аўтар Sandeep Bansal, крыніца
Калі б вы паказалі код, а не «...», то мы б ведалі, што гэта праблема сферы.
дададзена аўтар symcbean, крыніца
няма запыту павінен быць унутры функцыі, сог кожны раз, калі я выклікаць функцыю, будзе ісці і атрымаць мае дадзеныя з базы дадзеных
дададзена аўтар 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
дададзена
Паспрабуйце, каб атрымаць больш ключоў, замяніўшы кубік - з матрыцай ( «Не атрымалася выканаць запыт на выбарку:» var_export ($ запыт, праўда).) ( «Не атрымалася выканаць запыт на выбарку» mysqli_error ().), Таму што ваша будынак запыт можа быць закранута функцыя сфера, калі вы карыстаецеся іншыя зменныя, каб пабудаваць яго.
дададзена аўтар 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 SO ваш запыт няправільна, ці не так?
дададзена аўтар xdazz, крыніца
@Grace Што mysqli_error() сказаў?
дададзена аўтар xdazz, крыніца
Калі ласка, пост увесь код. І выкарыстоўвайце mysqli_error ($ DBConn) ;
дададзена аўтар xdazz, крыніца
Яны не працуюць, дайце мне ведаць, калі і трэба, каб я адправіў код, дзякуй шмат
дададзена аўтар Grace, крыніца
У мяне ёсць наступны код: $ вынік = mysqli_query ($ DBConn, $ запыт) або памерці -; ( "Не атрымалася выканаць запыт на выбарку" mysqli_error ().) і памылка я атрымліваю: Не атрымалася выканаць запыт на выбарку -
дададзена аўтар Grace, крыніца
без функцыі часткі (як я апісаў у маім пасце) мой запыт працуе выдатна, але калі ім назваўшы яго ў маёй функцыі нічога retreived
дададзена аўтар Grace, крыніца
нічога, радок пустая
дададзена аўтар Grace, крыніца

Калі вы карыстаецеся $ DBConn зменныя ўнутры функцыі, то гэта не атрымаецца, бо гэта не ў правільным аб'ёме. Перадаецца $ DBConn зменную ў функцыю, так што ён можа выкарыстоўваць яго.

0
дададзена
Больш кода дапаможа. Выкладваю абноўлены код, каб мы маглі ўбачыць, што праблема
дададзена аўтар JohnP, крыніца
Яны не працуюць, дайце мне ведаць, калі і трэба, каб я адправіў код, дзякуй шмат
дададзена аўтар Grace, крыніца