2013-05-17 13 views
18

Ho una domanda mysql, ma non riesco a legare param per essocome associare più parametri a richiesta MySQLi

SELECT users.email,users.handle,userprofile.mobile FROM users,userprofile WHERE users.email =? OR users.handle =? OR userprofile.mobile=? 

ho provato sotto la linea

$query = "SELECT users.email,users.handle,userprofile.mobile FROM users,userprofile WHERE users.email =? OR users.handle =? OR userprofile.mobile=?"; 
$stmt = $mysqli->prepare($query); 
$stmt->bind_param("sss",$email,$username,$mobile); 
if ($stmt->execute()) { 
if($stmt->num_rows){ 
    echo '......'; 
    } 
} 

ma non ho ricevuto e di errore:

Attenzione: mysqli_stmt :: bind_param(): numero di elementi in tipo stringa di definizione non corrisponde al numero di variabili di bind

+0

potete inserire il vostro intero codice di query compreso il pieno di preparare non solo la dichiarazione di sql – Dave

+1

realtà solo relased vostro usando BindParam la sua realtà $ stmt-> bind_param() quando si sta passando più parametri a come il vostro esempio – Dave

+0

"sss" significa che le 3 variabili che vuole legare sono tutte stringhe e passa tutte e 3 le variabili contemporaneamente, quindi ha bisogno di usare bind_param non bindparam. Dovrebbe solo usarlo senza _ se sta vincolando ogni input singolarmente come nell'esempio qui sotto. – Dave

risposta

25

Questa è la sintassi corretta per params vincolanti in mysqli

$SQL = "SELECT 
       users.email, 
       users.handle, 
       userprofile.mobile 
     FROM users,userprofile  
     WHERE users.email =? OR users.handle =? OR userprofile.mobile=?"; 

if ($stmt = $mysqli->prepare($SQL)) { 

    $stmt->bind_param("sss", $one,$two,$three); 
    $stmt->execute(); 

    //do stuff 
} 
+0

Questo è corretto :). Grazie. Sono interessato a cercare Dov'è il mio torto –

+0

@ AF.Puoi il benvenuto – Fabio

+0

posso chiamare bind_params 3 volte per associare argomenti diversi se li ho ricevuti come array? – mebjas

4

Prova questo ...

$stmt = $dbConn->prepare("SELECT users.email,users.handle,userprofile.mobile FROM users,userprofile WHERE users.email = ? OR users.handle = ? OR userprofile.mobile= ?"); 
$stmt->bind_param("sss", $email, $handle, $mobile); 
$stmt->execute(); 
Problemi correlati