2011-04-19 4 views
0
<?php 
$host = "localhost"; 
$user = "root"; 
$pass = "pass"; 
$db = "table"; 
$connect=mysql_connect($host, $user, $pass) or die(mysql_error()); 
mysql_select_db($db, $connect) or die(mysql_error()); 
if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
    $username = trim($_POST["username"]); 
    $res = mysql_query("SELECT id, username, email, ip FROM users WHERE username='". mysql_real_escape_string($username) . "'"); 

    $arr = mysql_fetch_assoc($res); 
    $user_id = $arr['id']; 
    $user_name = $arr['username']; 
    $user_email = $arr['email']; 
    $user_ip = $arr['ip']; 
    $res = mysql_query("UPDATE users SET enabled=no WHERE id=$user_id") or mysql_error(); 
} 
?> 
<form method="post" action=""> 
<input type="text" size="40" name="username"> 
<tr><td colspan="2"><input type="submit" class="btn" value='send'></td></tr> 
</form> 

Ce script n'exécute pas: $res = mysql_query("UPDATE users SET enabled=no WHERE id=$user_id") or mysql_error();php mysql update

Qu'est-ce qui ne va pas?

Répondre

7

Utilisation:

$res = mysql_query("UPDATE users SET enabled='no' WHERE id=$user_id") or die(mysql_error()); 
2

Essayez d'envelopper enabled = pas et id = $ user_id entre guillemets

$res = mysql_query("UPDATE users SET enabled='no' WHERE id='$user_id'") or mysql_error(); 

Vous devez également vous assurer que vous échapper à vos variables que votre code est vulnérable à SQL Injection

$username = mysql_real_escape_string(trim($_POST["username"])); 
+0

Si la colonne id est un entier que vous n'avez pas besoin des guillemets simples autour user_id $ –

+0

Je doute $ user_id cité unique ... êtes-vous sûr? – PHP

+0

Vrai, mais c'est la meilleure pratique - si c'est entre guillemets et vous échappez à la variable, il peut empêcher l'injection SQL – fin1te

0

vous devez déboguer.

à la fin de cette ligne

$res = mysql_query("UPDATE users SET enabled=no WHERE id=$user_id") or mysql_error(); 

écrire cette ligne

"UPDATE users SET enabled=no WHERE id=$user_id" 

vous verrez ce que la commande sera exécutée. probablement la variable $ user_id qui ne va pas.

si vous avez vu mauvaise commande sql tête aller et essayer de déterminer pourquoi user_id venir mal