2017-02-26 2 views
0

Ich arbeite an einem PHP-Skript, das Daten von MySQL erhalten soll.MySQL Abfragevariable nicht akzeptiert

Hier ist, was mache ich:

<?php 
include('db.php'); 
session_start(); 
$doctor_actual=$_SESSION['doctor_actual']; 
echo $doctor_actual; 
if(isset($_REQUEST['actionfunction']) && $_REQUEST['actionfunction']!=''){ 
$actionfunction = $_REQUEST['actionfunction']; 

    call_user_func($actionfunction,$_REQUEST,$con,$limit,$adjacent); 
} 
function showData($data,$con,$limit,$adjacent){ 
    $page = $data['page']; 
    if($page==1){ 
    $start = 0; 
    } 
    else{ 
    $start = ($page-1)*$limit; 
    } 
    $sql = "select * from tb_opiniones_doctor where codigo_verificacion = '".$doctor_actual."' order by id_opinion_doctor asc"; 
    $rows = $con->query($sql); 
    $rows = $rows->num_rows; 

    $sql = "select * from tb_opiniones_doctor where codigo_verificacion = '".$doctor_actual."' order by id_opinion_doctor asc limit $start,$limit"; 

    $data = $con->query($sql); 
    $str='<table><tr class="head"><td>Id</td><td>Firstname</td><td>Lastname</td></tr>'; 
    if($data->num_rows>0){ 
    while($row = $data->fetch_array(MYSQLI_ASSOC)){ 
     $str.="<tr><td>".$row['id_opinion_doctor']."</td><td>".$row['id_opinion_doctor']."</td><td>".$row['id_opinion_doctor']."</td></tr>"; 
    } 
    }else{ 
    $str .= "<td colspan='5'>No Data Available</td>"; 
    } 
    $str.='</table>'; 

echo $str; 
pagination($limit,$adjacent,$rows,$page); 
} 

Meine Probleme sind an den beiden Abfragen, sie funktionieren nur, wenn ich den realen Wert für $ doctor_actual setzen, nicht als Variable.

Ich habe den Wert für $ doctor_actual, es ist 9dv2ACvtwn2 echoed.

Wenn ich die Abfragen einfügen .. wo codigo_verificacion = "9dv2ACvtwn2" ... die Abfragen funktionieren gut.

Wenn ich gesagt:

codigo_verificacion = '".$doctor_actual."' 

oder

codigo_verificacion = '.$doctor_actual.' 

oder

codigo_verificacion = $doctor_actual 

es erscheint die Meldung:

No Data Available 

Antwort

3

Sie sollten über Variable scope lesen. $doctor_actual Außenfunktion und $doctor_actual Innenfunktion sind zwei verschiedene Variablen. Wie Sie oben etwas lesen können

<?php 
$var = 'text'; 

function myFunc() 
{ 
    global $var; 
    echo $var; // 'text' 
} 

wird Ihr Problem lösen.


Aber wie @Sean in den Kommentaren unten bemerkt, ist es bessere Idee, Wert als Parameter zu übergeben. Fügen Sie Ihrer Funktion einfach einen zusätzlichen Parameter hinzu und übergeben Sie den Wert während des Funktionsaufrufs.

+0

Danke, Wolen, Sie haben Recht. – mvasco

+1

Obwohl technisch korrekt, wird normalerweise nicht empfohlen, 'global' ->' global $ var; 'zu empfehlen. Da sie bereits Funktionsparameter verwenden, empfiehlt es sich, sie dort hinzuzufügen. – Sean

+0

Sie haben Recht, Wert als Parameter übergeben ist die bessere Idee, ich werde meine Antwort aktualisieren, danke! – Wolen

Verwandte Themen