2011-01-09 4 views
-2

D'accord, je dois être un idiot, parce que c'est ma 3ème question pour aujourd'hui. Voici mon code:Erreur avec la requête MySQL

date_default_timezone_set("America/Los_Angeles"); 

include("mainmenu.php"); 

$con = mysql_connect("localhost", "root", "********"); 
if(!$con){ 
    die(mysql_error()); 
} 

$usrname = $_POST['usrname']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$password = $_POST['password']; 
$email = $_POST['email']; 

mysql_select_db("`users`, $con) or die(mysql_error()"); 

$query = ("INSERT INTO `users`.`data` (`id`, `usrname`, `fname`, `lname`, `email`, `password`) 
VALUES (NULL, '$usrname', '$fname', '$lname', '$email', 'password'))"); 

mysql_query('$query') or die(mysql_error()); 

mysql_close($con); 

echo("Thank you for registering!"); 

je reçois toujours l'erreur renvoyée comme: « Vous avez une erreur dans votre syntaxe SQL, consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de « $ query 'à la ligne 1. d'aide un débutant, je suis sur le point de poignarder mon moniteur

+0

supprimer les citations de mysql_query ('$ query') –

+2

pas très utile titre – kenwarner

+0

haha ​​les gars ont rejeté ma Noob question – Ken

Répondre

4

1) sur cette ligne:

mysql_select_db("`users`, $con) or die(mysql_error()"); 

devrait être:

mysql_select_db("users", $con) or die(mysql_error()); 

En ce moment, vous avez du code PHP dans la chaîne que vous envoyez comme le nom de la base de données.

2) Sur cette ligne:

mysql_query('$query'); 

En utilisant des guillemets simples, la chaîne littérale $query sera envoyée plutôt que le contenu d'une variable appelée $query. Utilisez soit mysql_query($query) ou mysql_query("$query");

De plus, lorsque vous créez $query, et où vous echo le message de réussite, les parenthèses autour de la chaîne ne sont pas nécessaires. À l'intérieur du $query, vous avez trop de parenthèses fermantes. Vous ne pouvez pas non plus échapper à l'entrée, donc si quelqu'un écrit quelque chose de méchant dans votre formulaire (comme n'importe quoi avec un seul caractère de citation), il cassera votre requête.

+0

OMG! THANX TELLEMENT! (Je vous ai dit que j'étais un Noob) – Ken

+1

-1 pour ne pas pointer mysql_real_escape_string ou SQL-injecter des problèmes dans ce code dangereux. – Johan

+1

Sauf que je l'ai fait remarquer ... il y a 3 mois ...c'est la dernière phrase de la réponse. –

1

mysql_query. (' $ query ') => mysql_query ("$ query")

2
mysql_query($query) or die(mysql_error()); 

des guillemets asymétriques autour de votre variable de requête $.

apostrophes (') ne vous permettent pas d'inclure des variables, alors que des guillemets doubles (") font.

1

Comment réparer le trou SQL-injection

Modifier ce code

enter image description herehorreur de codage

$usrname = $_POST['usrname']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$password = $_POST['password']; 
$email = $_POST['email']; 

I Nto ce

$usrname = mysql_real_escape_string($_POST['usrname']); 
$fname = mysql_real_escape_string($_POST['fname']); 
$lname = mysql_real_escape_string($_POST['lname']); 
$password = mysql_real_escape_string($_POST['password']); 
$email = mysql_real_escape_string($_POST['email']);