2013-08-08 10 views
0

J'ai généré un numéro de 10 chiffres, ajouté à une base de données après l'achat.Vérifiez si l'entrée est disponible dans la base de données

Maintenant, je veux faire une page php pour donner aux utilisateurs une boîte de saisie, leur demander d'entrer le numéro à 10 chiffres, et cliquez sur soumettre. Après avoir cliqué sur Envoyer, il doit retourner si la broche est utilisée ou n'a pas été utilisée. (Utilisé si sa non disponible - Non utilisé si son dans le tableau)

J'obtenu le code suivant:

<?php 
require_once 'db.php'; 
function validated_pin($pin) 
{ 

    $pin = mysql_real_escape_string($pin); // SECURITY! 
    $result = mysql_query("SELECT pins FROM pins WHERE pin='$pin' LIMIT 1"); 
    if (mysql_fetch_row($result)) { 
    return 'This pin has already been used'; 
    } else { 
    return 'This pin is available for use'; 
} 
} 

echo '<html><center> 
<form action="' . $_SERVER['SCRIPT_NAME'] . '" method="post"> 
<table style="border:0px solid black;"> 
<tr> 
<td>PIN*:</td><td><input type="text" name="pin" value="" class="bginput"/></td> 
</tr> 
<tr> 
<td></td><td><input type="submit" id ="submit" name="submit1" value="Check Pin>>" class="button"></td> 
</tr> 
</table>';   
       echo validated_pin($pin); 
echo '</center></html>'; 
?> 

Et phpMyAdmin ressemble à ceci: http://gyazo.com/67c3df7171c83c677cb221c04d644ed7.png

Il est situé dans _donation et broches nom de la table

Je ne sais pas ce qui se passe essayé de regarder partout

Le code actuel sera retourner cette erreur

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/website/public_html/directory/example.php on line 8 
+0

Cette erreur se produit généralement lorsqu'une valeur booléenne (false) est renvoyée, ce qui signifie que la requête ur n'a pas pu extraire les données. – kevinm

Répondre

0

Votre requête est-

$result = mysql_query("SELECT pins FROM pins WHERE pin='$pin' LIMIT 1"); 

devrait-il pas

$result = mysql_query("SELECT pin FROM pins WHERE pin='$pin' LIMIT 1"); 

pin est le nom de la colonne de droite? pas pins

if (mysql_fetch_row($result)) { 

    if(mysql_num_rows($result)>0) 
    return 'This pin has already been used'; 
    else 
    return 'This pin is available for use'; 

}

+0

En utilisant votre 2ème code se débarrasser de l'erreur, mais il affiche toujours automatiquement "Cette broche est disponible pour l'utilisation" sans entrer aucune valeur, et même si je le fais toujours retourne "Cette broche est disponible pour utilisation" – Swaly

+0

@ Swaly- Tu pourrais essayer ça? – kevinm

+0

Juste essayé, il ne montre plus "Cette broche est disponible pour utilisation" plus mais peu importe ce que j'entre rien ne se manifeste – Swaly

0

Votre requête ne parvient pas à récupérer les données, ce qui false retourné. Premièrement, vous devez saisir cette valeur false et ne pas supposer que $result contient des données.

En second lieu - var_dump() la requête que vous exécutez, exécutez que PhpMyAdmin

+0

A fait var_dump() et obtenu ceci: resource (4) de type (résultat mysql) – Swaly

0

Cela semblait avoir résolu:

$pin = $_POST["pin"]; 

function validated_pin($pin) 
{ 

    $pin = mysql_real_escape_string($pin); // SECURITY! 
    $result = mysql_query("SELECT pin FROM pins WHERE pin='$pin' LIMIT 1"); 

    if(mysql_num_rows($result) == 0) { 
     return 'This pin has already been used'; 
      } else { 
     return 'This pin is available for use'; 
      } 
} 

toujours face à la question de le dire « déjà été utilisé » avant exercerai n'importe quel code.

Questions connexes