2010-02-21 14 views
13

Ecco il problema: oggi ho avviato uno scambio per utilizzare mysqli. Nessun problema, ho dovuto cambiare alcune dichiarazioni. Tutto è andato bene, nessun errore ... Tranne che non riesco a farlo per eseguire alcuna query. Ho il doppio e il triplo controllato la mia sintassi. Ho anche iniziato a creare situazioni in cui DOVREBBE restituire un errore (cercando di portarlo in INSERT su tabelle che non esistono o con valori che superano i limiti di colonna o che non corrispondono al tipo) e ... niente. Non restituisce un errore, non scrive. Si lamenterà se il parametro uno NON è un tipo mysqli.Problema durante l'esecuzione di mysqli_query

Ecco il codice rilevante:

$con = mysqli_connect("localhost", "root", "","test"); 

if (mysqli_connect_errno()) { 
printf("Connect failed: %s\n", mysqli_connect_error()); 
exit(); 
} 

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')"; 
mysqli_query($con, $query); 

E nulla. Funziona senza problemi, ma non scrive mai il record. Posso anche cambiare la query $ in "hdjhkfhhjfkd" e non ha alcun problema. mysqli_query() non è in esecuzione, punto. L'unica volta che riesco a farlo reagire è se cambio $ con qualsiasi altra cosa, quindi si lamenta che ha bisogno di un tipo mysqli.

Pensieri? Questo mi sta facendo impazzire.

+0

hai abilitato il modulo mysqli nel file di configurazione PHP. Penso che sia disabilitato di default. Hai compilato PHP da solo? Qual è la tua configurazione? –

+0

mysqli_query() restituisce qualcosa? – Marcin

+0

No, non restituisce nulla per la particolare affermazione. Questo è solo un INSERT. mysqli è abilitato per quanto riguarda phpinfo(). Sto eseguendo l'ultima versione di Zend Community Edition. PHP 5.3, MySQL 5.0.5 – GilloD

risposta

28

Hai controllato il valore di ritorno di mysqli_query()? Restituisce FALSE se si è verificato un errore. In tal caso, mysqli_error() fornisce ulteriori informazioni sull'errore.

<?php 
$con = mysqli_connect("localhost", "root", "", "test"); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')"; 
echo "<pre>Debug: $query</pre>\m"; 
$result = mysqli_query($con, $query); 
if (false===$result) { 
    printf("error: %s\n", mysqli_error($con)); 
} 
else { 
    echo 'done.'; 
} 
+0

Mille grazie! Sembra un errore di sintassi canaglia. Finalmente l'ho fatto correre con un sacco di caccia a quota singola. – GilloD

+0

È necessario impostare \ _startup \ _errors = 1 sul server di sviluppo o tenere d'occhio il registro degli errori. E avere spesso un feedback visivo "garantito" nella parte della sceneggiatura con cui si hanno problemi è spesso una buona idea. – VolkerK

-3

Ho anche sofferto di questo problema. Infine ho trovato che il problema si verifica nella mia connessione al database. È possibile utilizzare questo codice di connessione seguente per collegare facilmente il database.

$db_connect = mysqli_connect("host", "user", "password", "database"); 

Spero che questo codice possa essere di aiuto. Se hai qualche problema, lascia un commento. Grazie.

0
public function connection() 
{ 
     $con=mysqli_connect('localhost','root','','int'); 
     return $con; 

} 
public function login($u,$p) 
{ 
    $fd=$this->connection(); 
    $sql = "SELECT * FROM user WHERE (uname = '".$u."' AND pass = '".$p."')"; 
    $result = mysqli_query($fd,$sql); 
    $num = mysqli_num_rows($result); 
    if($num) 
    { 
     return TRUE; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 
+3

Prova ad aggiungere una spiegazione alla tua risposta, oltre a un semplice blocco di codice. –

Problemi correlati