Bir işlev php içindeki veritabanına bağlanılamıyor

Veritabanıma bağlayıp değerlerimi aldığım bir PHP dosyası var.

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

Bu kod ile her şey harika, fakat bloğu bir PHP fonksiyonuna soktuğumda, değerlerimı geri alamam (prosedürün çağrısı yapılabiliyor), bunu deniyorum:

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


?>
1
$ Query ve $ sonucu fonksiyondan tanımlamanız mı gerekiyor?
katma yazar Sandeep Bansal, kaynak
Kodu '...' yerine göstermiş olsaydınız, bunun bir kapsam sorunu olduğunu biliyorduk.
katma yazar symcbean, kaynak
Sorgunun içinde hiçbir sorgu bulunmamalı, coz işlevini her çağırdığımda, veriyi veri tabanından verip geri alacağım
katma yazar Grace, kaynak

3 cevap

Bunun nedeni, işlev kapsamında, dış değişkenlerin görünür olmamasıdır.

$ Dbconn değişkenine global hale getirerek veya bir argüman olarak ileterek ulaşabilirsiniz.

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

veya

 $dbconn = mysqli_connect(...,...,...);
 function drawTable($dbconn)
{
   $query = ...
   $result = ...
   ....
}
drawTable($dbconn);
3
katma
Die ("Seçili sorgu gerçekleştirilemedi -". Mysqli_error ()) ile kalıp değiştirerek daha fazla ipucu almaya çalışın. "Sorgulama gerçekleştirilemedi:". Var_export ($ query, true)) çünkü sorgu yapınız etkilenebilir. Bunu oluşturmak için başka değişkenler kullanıyorsanız, işlev kapsamı.
katma yazar Skrol29, kaynak
Ayrıca, unset değişkeni gibi tüm PHP hatalarını yakaladığınızdan emin olmak için error_reporting (E_ALL || E_STRICT) kodunu da ekleyin.
katma yazar Skrol29, kaynak
Çalışmıyorlar, bana bazı kodları göndermem için bana haber verin, teşekkürler.
katma yazar Grace, kaynak

Yol 1: genel $ dbconn 'e erişin.

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

Yol 2: bir parametre olarak $ dbconn iletin.

$dbconn = mysqli_connect(...,...,...);
function drawTable($dbconn)
{
    $query = ...
    $result = ...
    ....
}
drawTable($dbconn);
0
katma
"Çalışmıyor" u tanımlayın ve varsa hata mesajını verin.
katma yazar xdazz, kaynak
@Grace SO sorgunuz yanlış, değil mi?
katma yazar xdazz, kaynak
@Grace mysqli_error() ne dedi?
katma yazar xdazz, kaynak
Lütfen tüm kodunuzu gönderin. Ve mysqli_error ($ dbconn) kullanın;
katma yazar xdazz, kaynak
Çalışmıyorlar, bana bazı kodları göndermem için bana haber verin, teşekkürler.
katma yazar Grace, kaynak
Bu koda sahibim: $ result = mysqli_query ($ dbconn, $ query) veya die ("Seçme sorgusu gerçekleştirilemedi" -. Mysqli_error ()); ve aldığım hata: Seçili sorgu gerçekleştirilemedi -
katma yazar Grace, kaynak
işlev bölümü olmadan (yazımda tanımladığım gibi), sorgum harika çalışıyor, ancak işlevimin içinde çağırdığımda hiçbir şey geri alınmıyor
katma yazar Grace, kaynak
hiçbir şey, emici bir ip
katma yazar Grace, kaynak

İşlev içinde $ dbconn değişkenini kullanıyorsanız, doğru kapsamda olmadığından başarısız olur. Kullanabilmek için $ dbconn değişkenini işleve geçirin.

0
katma
Daha fazla kod yardımcı olacaktır. Sorunun ne olduğunu görebilmemiz için güncellenmiş kodu gönderin
katma yazar JohnP, kaynak
Çalışmıyorlar, bana bazı kodları göndermem için bana haber verin, teşekkürler.
katma yazar Grace, kaynak