Salida extraña para búsqueda simple de php mysql

Estoy tratando de crear una búsqueda simple que primero tome la 'consulta' de un formulario pasado de un formulario HTML a través de la URL a este script. Una vez que ejecuto el script, obtengo el resultado: ID de recurso #140 ID de recurso #141 ID de recurso #142. ¿Por qué obtengo este resultado y qué significa?

Nota al margen: solo estoy usando el "eco" como una forma de ver el resultado de cada variable.

<?php 
//connect to database
mysql_connect("localhost", "user", "password") or die("Error connecting to database: " .mysql_error());

mysql_select_db("dataBase") or die(mysql_error());

?>
<?php
$query = $_GET['query']; 
// gets value sent over search form

$user_id = mysql_query("SELECT id FROM users WHERE email = '$query'") or die(mysql_error());
echo $user_id;

$account_id = mysql_query("SELECT 'account_id' FROM accounts_users WHERE 'user_id' LIKE ('$user_id')") or die(mysql_error());
echo $account_id;

$user_name = mysql_query("SELECT 'account_name' FROM accounts WHERE 'id' LIKE ('$account_id')") or die(mysql_error());
echo $user_name;    
?>

preguntado el 03 de mayo de 12 a las 09:05

Marque una respuesta como correcta si le ayudó. -

3 Respuestas

Esta no es la forma de imprimir los resultados. El método mysql_query devuelve un recurso que debe usar dentro de un bucle para imprimir los resultados. Por ejemplo, repite el segundo ejemplo en el página oficial de documentos.

PS $query = $_GET['query']; usando esta declaración podrías tener inyecciones sql auténticos.

contestado el 03 de mayo de 12 a las 09:05

Gracias ayudó mucho y gracias por su preocupación. De hecho, he trabajado en este problema durante un tiempo y reescribí el código muchas veces. En mis últimos intentos, no me molesté en protegerme contra las inyecciones hasta que conseguí que el código base funcionara. daniel toebe

Intente algo similar a esto, después de la primera consulta "SELECCIONAR":

    while($user_id_obj = mysql_fetch_object($user_id))
    {
      echo $user_id_obj->id;
    }

contestado el 03 de mayo de 12 a las 09:05

Gracias ayudó mucho y gracias por su preocupación. De hecho, he trabajado en este problema durante un tiempo y reescribí el código muchas veces. En mis últimos intentos, no me molesté en protegerme contra las inyecciones hasta que conseguí que el código base funcionara. daniel toebe

Esto podría ser posible de dos maneras. Lo que es útil para usted depende de sus requisitos.

1. Si su consulta contiene un solo valor como resultado, entonces le será útil seguir el código con cambios en su código.

<?php 
//connect to database
mysql_connect("localhost", "user", "password") or die("Error connecting to database: " .mysql_error());

mysql_select_db("dataBase") or die(mysql_error());

?>
<?php
$query = $_GET['query']; 
// gets value sent over search form

$result_user = mysql_query("SELECT id FROM users WHERE email = '$query'") or die(mysql_error());
if (!$result_user) {
    die('Could not query:' . mysql_error());
}
$user_id=mysql_result($result_user,0); // outputs first user's id
echo $user_id;
$result_accountuser = mysql_query("SELECT 'account_id' FROM accounts_users WHERE 'user_id' LIKE ('$user_id')") or die(mysql_error());
if (!$result_accountuser) {
    die('Could not query:' . mysql_error());
}
$account_id=mysql_result($result_accountuser,0); // outputs first accounts_users's account_id
echo $account_id;
$result_account = mysql_query("SELECT 'account_name' FROM accounts WHERE 'id' LIKE ('$account_id')") or die(mysql_error());
if (!$result_account) {
    die('Could not query:' . mysql_error());

}
echo mysql_result($result_account,0); // outputs first accounts's account_name
?>

2. O su consulta contiene más de un resultado o más de una fila, entonces los siguientes cambios en su código lo ayudarán

<?php 
//connect to database
mysql_connect("localhost", "user", "password") or die("Error connecting to database: " .mysql_error());

mysql_select_db("dataBase") or die(mysql_error());

?>
<?php
$query = $_GET['query']; 
// gets value sent over search form

$result_user = mysql_query("SELECT id FROM users WHERE email = '$query'") or die(mysql_error());
        while($row=mysql_fetch_array($result_user))
        {
                $user_id = $row['id'];
                echo    $user_id;
        }


$result_accountuser = mysql_query("SELECT 'account_id' FROM accounts_users WHERE 'user_id' LIKE ('$user_id')") or die(mysql_error());
        while($row=mysql_fetch_array($result_accountuser))
        {
                $account_id = $row['account_id'];
                echo $account_id;

        }

$result_account = mysql_query("SELECT 'account_name' FROM accounts WHERE 'id' LIKE ('$account_id')") or die(mysql_error());
        while($row=mysql_fetch_array($result_account))
        {
                echo $row['account_name'];

        }

?>

contestado el 03 de mayo de 12 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.