2013-04-17 5 views
4

Merci beaucoup pour vos réponses, ils m'ont vraiment beaucoup aidé!Problème SQL au sein de php

Je suis curieux de savoir ce que je fais de mal: je ne peux obtenir aucune valeur d'une instruction SQL.

Ma structure de table de base de données: enter image description here

Mon phpcode:

include('config.php'); 
$id = $_GET['id']; 

$query = "SELECT * FROM upload WHERE id = '$id'"; 
echo $query."<br/>"; 


$result = mysql_query($query) or die('error'); 
print_r($result); 
echo $result['id']; 

Je reçois les points suivants lors des tests:

« SELECT * FROM téléchargement où id = '1'

Numéro de ressource 2 "

Mais il y a un identifiant avec la valeur '2', mais pourquoi ne le montre-t-il pas dans mon code HTML? Seulement avec un « tout » déclaration que j'obtenir les résultats souhaités:

while($results = mysql_fetch_array($result)) 
    { 
     echo $results['filetitle']; 
    } 

Est-ce while nécessaire avec un seul résultat? Je veux dire, il ne peut y avoir qu'un seul ID.

+4

Vous utilisez [une ** API de base de données obsolète **] (http://stackoverflow.com/q/12859942/19068) et vous devez utiliser un [remplacement moderne] (http://php.net/manual/ fr/mysqlinfo.api.choosing.php). Vous êtes également vulnérable aux [attaques par injection SQL] (http://bobby-tables.com/) ** qu'une API moderne rendrait plus facile à [défendre] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

+0

Vous n'exécutez pas la requête. Vous faites écho à une chaîne qu'il fait parfaitement. Je ne vois pas la connexion à la base de données se produire n'importe où. – sashkello

+1

$ row = mysql_fetch_array ($ result); echo $ row ['id']; –

Répondre

2

Une ressource est une ressource. Il contient un certain nombre de lignes. Ce n'est pas spécial car il y a exactement une ligne retournée.

Vous ne devez pas utiliser while si vous savez qu'il ya exactement un résultat, mais vous devez toujours utiliser mysql_fetch_array ou une autre méthode pour extraire la première ligne de celui-ci.

+0

Merci, toutes vos réponses ont vraiment aidé! Je sais que c'est le 'vieux' SQL, mais je n'ai jamais appris le mySQLi correctement. Une fois que j'ai ce travail, je veux pratiquer avec mySQLi :) – Lisa

1

$result est une matrice, ayant chaque ligne une sortie. Donc, pour accéder à id, vous devez d'abord indiquer la ligne.

Par exemple, avec $result[ 0 ][ 'id' ].

Toutefois, il est préférable de le faire via l'expression while($results = mysql_fetch_array($result)).

+0

'$ result = mysql_query ($ query) ou die ('error'); echo $ result [0] ['id']; ' Celui-ci ne fonctionne pas, il ne retournera rien .. :) Ou est-ce que je fais quelque chose de mal? – Lisa

+0

Oh, vous avez raison! Si vous voulez vérifier toute la hiérarchie matricielle, tapez 'print_r ($ result)'. – fedorqui

0

essayez avec ce

$result[0]['id']; 
1

SELECT déclaration retour Resource ID #, vous devez itérer votre résultat en utilisant mysql_fetch_array, mysql_fetch_assoc fonctions.

Questions connexes