Modifier: L'OP n'a pas révélé jusqu'à récemment que le type du champ est un varchar, pas un nombre. Par conséquent, il/elle doit utiliser ceci:
mysql_query("SELECT * FROM student WHERE IDNO='"
. mysql_escape_string($_GET['id']) . "'");
Pour la postérité, ma première réponse était:
On dirait que vous essayez d'analyser un nombre hexadécimal, auquel cas vous pourriez faire :
hexdec($_GET['id'])
(int)x
est le même que intval(x)
, qui par défaut à la base 10. Votre numéro, 03A43
, a été clairement pas 10 fonder, si PHP cessé de le lire quand il est arrivé à A
. Vous pouvez également dire intval(x, 16)
pour analyser le nombre hexadécimal, mais puisque vous utilisez le résultat sous forme de chaîne, hexdec est probablement un petit peu plus rapide. Comme une note de prudence sans rapport, de nombreux langages de programmation traitent les nombres commençant par 0 comme octal plutôt que décimal. Si vous dites $myvar = 031;
, $myvar
sera défini sur 25
. Cela s'applique également à JavaScript ainsi qu'à sa fonction parseInt
. En PHP, puisque (int)
et intval
par défaut à la base 10, intval('031')
sera 31
. Cependant, intval('031', 0)
sera 25
parce que le second paramètre, 0
, indique intval
pour détecter automatiquement la base.
RAPIDE, tout le monde visite 'http: //localhost/exp/update.php? Id =% 27% 3B -% 0ADROP + TABLE + étudiant + CASCADE% 3B'. Sérieusement, la chaîne doit être échappée avec mysql_escape_string. –
Hmm ... semble que je n'ai pas ce site sur mes internets ... – SeanJA
Il serait probablement encore mieux si l'on devait utiliser mysqli et préparé des déclarations non? – SeanJA