2012-06-20 12 views
6

Questo è abbastanza semplice. MODIFICA: domanda aggiornata e aggiunta quarta eco.MySQL non sta recuperando i dati corretti? (PHP)

Ecco codice PHP:

<?php 

$ratings="3"; 
$item="Inception"; 

$query="SELECT * FROM items WHERE item = '". $item ."' LIMIT 1"; 

echo $query; 

echo "<br />"; 

$result=mysql_query($query); 

echo $result; 

echo "<br />"; 

while ($row = mysql_fetch_array($result)) { 
    $item_id = $row['item_id']; 
    echo $item_id; 
    echo "<br />"; 
} 

    $query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')"; 

    echo $query_two; 
    $sql = mysql_query($query_two); 
    mysql_close(); 
?> 

Ecco uscita web con tutte le eco di:

SELECT * FROM items WHERE item = 'Inception' LIMIT 1 
Resource id #7 


INSERT INTO ratings (rating, item_id), VALUES (' 3 ', ' ') 

Come mai il mio $ item_id è vuota? (terza riga sotto l'ID risorsa)

+0

quella risorsa è da '$ echo risultato; ', cosa pensavi che sarebbe successo lì? – Wrikken

+0

Ho fatto una domanda dall'angolo sbagliato. E ho appena risposto alla mia domanda. Perché $ items_id è vuoto? perché dovrebbe essere $ item_id - un errore di battitura. Ma tutti hanno risposto alla mia domanda originale. Grazie! – KickingLettuce

risposta

5

Questa parte di codice produce:

$result=mysql_query($query); 

echo $result; 

Essa mostra Resource... perché di resource tipo, è solo una sorta di gestore speciale per interrogazione, non è come tipo normale (stringa o int per esempio) , quindi non ha nulla di leggibile da stampare.

Se si desidera stampare i dati dalla query, è necessario innanzitutto recuperarli.

Si noti inoltre che quelle funzioni mysql_* sono obsolete, è sconsigliato utilizzarle. Nota dal manuale php:

L'utilizzo di questa estensione è sconsigliato. Invece, dovrebbe essere usata l'estensione MySQLi o PDO_MySQL . Vedi anche MySQL: scelta di una guida API e domande frequenti relative a per maggiori informazioni. Alternative a questa funzione includono:

mysqli_query()

PDO :: interrogazione()

4

Questo non ha nulla a che fare con gli ID dal database.

Questo (Result#7) indica che questa risorsa risultato è la settima risorsa creata dall'esecuzione dello script php.

2

L'ID risorsa viene dal processo reale/oggetto che il MySQL Query è.

per restituire il risultato è necessario:

$row = mysql_fetch_array($query); 

echo $row['item'] 
2

Hai bisogno di fare qualcosa con la risorsa risultato. Prova questo:

$result=mysql_query($query); 

//echo $result; 

$result_array = mysql_fetch_assoc($result); 

print_r($result_array); 

EDIT: Vedo aggiornati alla tua domanda.

È consigliabile eseguire la query item='Inception' direttamente in MySQL per confermare che i risultati sono quelli previsti.

3

anche

$query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')"; 

dovrebbe essere

$query_two = "INSERT INTO ratings (rating, item_id) VALUES (' {$ratings} ', ' {$item_id} ')"; 

Hai virgola prima VALUES.

Inoltre, sembra che lo $item_id sia vuoto. Si prega di controllare DB se si dispone di dati per item = 'Inception'.

Per quanto riguarda, Result#7 si prega di seguire altre risposte.

+0

buona cattura, grazie! – KickingLettuce

+0

Un altro motivo possibile per lo 'item_id' vuoto: potrebbe non esserci nessuna riga corrispondente alla condizione della query. – bfavaretto

1

Non è possibile echeggiare il risultato in modo semplice. È necessario recuperare il risultato, ad esempio un array:

while ($row = mysql_fetch_array($query)) { 
    echo $row['a_column'] . "<br />"; 
} 

o di un oggetto:

while ($variable = mysql_fetch_object($query) { 
$value = $variable->a_column; 
} 
echo $value; 

ci sono più modi, ma questo è solo due esempi

Problemi correlati