2012-06-20 15 views
6

Esto es bastante directo. EDITAR: pregunta actualizada y cuarto eco añadido.¿MySQL no está obteniendo datos correctos? (PHP)

Aquí es código 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(); 
?> 

Aquí se emite web con todas las de eco:

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


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

¿Cómo es que mi $ item_id está en blanco? (tercera fila debajo de la Identificación del recurso)

+0

Ese recurso es de '$ eco resultado; ', ¿qué crees que pasaría allí? – Wrikken

+0

Estaba haciendo una pregunta desde el ángulo equivocado. Y acaba de responder mi propia pregunta. ¿Por qué $ items_id está en blanco? porque debería ser $ item_id - un error tipográfico. Pero todos respondieron mi pregunta original. ¡Gracias! – KickingLettuce

Respuesta

5

Esta parte del código de lo produce:

$result=mysql_query($query); 

echo $result; 

Muestra Resource... porque es de resource tipo, es sólo una especie de controlador especial para consulta, no es como el tipo normal (cadena o INT por ejemplo) , por lo que no tiene nada legible para imprimir.

Si desea imprimir los datos de la consulta, primero debe buscarlos.

También tenga en cuenta que esas funciones mysql_* están en desuso, se desaconseja su uso. Nota del manual php:

Se desaconseja el uso de esta extensión. En su lugar, se debe usar la extensión MySQLi o PDO_MySQL . Consulte también MySQL: elegir una guía API y preguntas frecuentes relacionadas para obtener más información. Alternativas a esta función incluyen:

mysqli_query()

PDO :: query()

4

Esto no tiene nada que ver con los ID de la base de datos.

Esto (Result#7) dice que este recurso de resultado es el séptimo recurso que se creará mediante la ejecución de su script php.

2

el ID de recurso está viniendo del proceso real/objeto que el MySQL Query es.

vuelta el resultado que necesita:

$row = mysql_fetch_array($query); 

echo $row['item'] 
2

Que tiene que hacer algo con el recurso resultado. Prueba esto:

$result=mysql_query($query); 

//echo $result; 

$result_array = mysql_fetch_assoc($result); 

print_r($result_array); 

EDIT: veo que actualizó su pregunta.

Debe ejecutar su consulta item='Inception' directamente en MySQL para confirmar que los resultados son los esperados.

3

también

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

debería ser

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

Tienes coma antes VALUES.

Además, parece que $item_id está en blanco. Compruebe DB si tiene datos para item = 'Inception'.

Con respecto a, Result#7 por favor, siga otras respuestas.

+0

¡Buena captura, gracias! – KickingLettuce

+0

Otra posible razón para el espacio en blanco 'item_id': no puede haber filas que coincidan con la condición de consulta. – bfavaretto

1

No se puede repetir el resultado tan simple. Usted tendrá que obtener el resultado que, por ejemplo, una matriz:

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

o un objeto:

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

hay más formas, pero esto es sólo dos ejemplos

Cuestiones relacionadas