2012-07-25 17 views
7

Sto inserendo i dati in un DB MySQL, Nel caso in cui l'inserimento non riesca, è necessario fornire un messaggio di errore appropriato che lo indichi. Secondo il mio codice di seguito sarò Echo-ing il messaggio Inserted se l'inserimento è stato positivo o negativo.Inserire i dati nel DB MySql e visualizzarli se l'inserimento ha esito positivo o negativo

Quello che voglio fare è echo il messaggio Inserted solo quando l'inserimento dei dati è un successo, e restituire fail se fallisce. Come posso modificare il mio codice per farlo?

<?php 

mysql_connect("localhost", "root", "123") or die(mysql_error()); 
mysql_select_db("swm_database") or die(mysql_error()); 

mysql_query("INSERT INTO PEOPLE (NAME) VALUES ('COLE')")or die(mysql_error()); 

echo "Inserted"; 
?> 
+0

le risposte di seguito spiegano già cosa si dovrebbe fare, ma si pensi di usare mysqli o PDO piuttosto che le funzioni mysql_ *. –

risposta

24
$result = mysql_query("INSERT INTO PEOPLE (NAME) VALUES ('COLE')")); 
if($result) 
{ 
echo "Success"; 

} 
else 
{ 
echo "Error"; 

} 
3

Dopo INSERT di query è possibile utilizzare ROW_COUNT() per verificare l'operazione di inserimento di successo come:

SELECT IF(ROW_COUNT() = 1, "Insert Success", "Insert Failed") As status; 
+1

Return true non garantisce che i dati siano stati inseriti nel database, posso dirlo? – Timeless

+0

sì, questo è il modo più sicuro in quanto return true non funzionerà in caso di query 'INSERT IGNORE'. – Omesh

1
if (mysql_query("INSERT INTO PEOPLE (NAME) VALUES ('COLE')")or die(mysql_error())) { 
    echo 'Success'; 
} else { 
    echo 'Fail'; 
} 

Anche se dal momento che hai or die(mysql_error()) mostrerà il mysql_error() sullo schermo quando fallisce. Probabilmente si dovrebbe rimuovere tale se non è il risultato desiderato

2

Secondo il libro PHP and MySQL for Dynamic Web Sites (4th edition)

Esempio:

$r = mysqli_query($dbc, $q); 

Per le query semplici come INSERT , UPDATE, DELETE, ecc. (Che non restituisce record), la variabile $r, abbreviazione per il risultato, sarà TRUE o FALSE, a seconda che la query sia stata eseguita correttamente.

Ricordare che "eseguito correttamente" significa che è stato eseguito senza errori; it non significa che l'esecuzione della query ha necessariamente avuto il risultato desiderato; dovrai testare per quello

Quindi come testare?

Mentre la funzione mysqli_num_rows() restituisce il numero di righe generate da un SELEZIONARE ricerca, mysqli_affected_rows() restituisce il numero di righe interessate da un INSERTO, UPDATE, o DELETE interrogazione. E 'usato in questo modo:

$num = mysqli_affected_rows($dbc); 

differenza mysqli_num_rows(), l'unico argomento della funzione che serve è la connessione al database ($ DBC), non i risultati della query precedente ($ r).

Problemi correlati