2012-06-19 3 views
0

Я пытаюсь обновить информацию клиентов, используя запрос mysql. Переменные были определены здесь:Обновление запроса в php, не распознающем переменные

$member_id = $_POST['member_id']; 
$username = $_POST['username']; 
$password = $_POST['password']; 
$bizname = $_POST['bizname']; 
$phone = $_POST['phone']; 
$email = $_POST['email']; 
$url = $_POST['url']; 
$contact = $_POST['contact']; 
$notes = $_POST['notes']; 
$sales_rep = $_POST['sales_rep']; 
$member_type = $_POST['member_type']; 

$password = md5($password); 

Когда я запускаю ниже запроса, обновления ничего в базе данных

$qry = "update members set username='".$username."',password='".$password."',bizname='".$bizname."',phone='".$phone."',email='".$email."',url='".$url."',contact='".$contact."',notes='".$notes."',sales_rep='".$sales_rep."',member_type='".$member_type."' where member_id='".$member_id."'"; 

Я повторил $qry и результаты приведены ниже:

update members set 
username='',password='d41d8cd98f00b204e9800998ecf8427e',bizname='',phone='', 
email='',url='',contact='',notes='',sales_rep='',member_type='' 
where member_id='' 

Кто-нибудь есть идея, почему значение переменной $password имеет значение? Я попытался использовать шифрование md5 для других переменных, чтобы убедиться, что это будет работать, и у них будут значения, но, очевидно, я хочу сделать это только для пароля.

EDIT: Это форма редактирования-client.php

<?php 
require_once('auth.php'); 
require_once('config.php'); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; /> 
<title>Untitled Document</title> 
</head> 

<body> 
<?php 


//Function to sanitize values received from the form. Prevents SQL injection 
function clean($str) { 
    $str = @trim($str); 
    if(get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    return mysql_real_escape_string($str); 
} 

//define username variable and sanitize 
$username = clean($_POST['username']); 

//Run query for selected user and store in an array 
$result = mysql_query("select * from members where username='".$username."'"); 
$row = mysql_fetch_array($result); 

//display all clients information in a form to edit 
echo '<h1>'.$username.'</h1>'; 
echo '<form name="update-client" action="update-client.php" />'; 
echo '<table>'; 
echo '<tr><td>'; 
echo '<input type="hidden" name="member_id" value="'.$row['member_id'].'"'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Username: <input name="username" type="text" value="'.$username.'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Password: <input name="password" type="text" value="'.$row['password'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Business Name: <input name="bizname" type="text" value="'.$row['bizname'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Phone: <input name="phone" type="text" value="'.$row['phone'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Email: <input name="email" type="text" value="'.$row['email'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Website Address: <input name="url" type="text" value="'.$row['url'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Contact: <input name="contact" type="text" value="'.$row['contact'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Notes: <input name="notes" type="text" value="'.$row['notes'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo 'Sales Representative: <input name="sales_rep" type="text" value="'.$row['sales_rep'].'" />'; 
echo '</td></tr>'; 
echo '<tr><td>'; 
echo '<input name="submit" type="submit" value="Edit" />'; 
echo '</td></tr>'; 
echo '</table>'; 
echo '</form>'; 


?> 
</body> 
</html> 
+5

Что такое HTML-код для размещения? –

+0

У вас, вероятно, есть опечатка в вашей '$ _POST' –

+4

Весь' $ _POST' кажется пустым, это тоже md5 пустой строки. – Wrikken

ответ

1

Изменение:

echo '<form name="update-client" action="update-client.php" />'; 

To:

echo '<form name="update-client" action="update-client.php" method="post"/>'; 

Вы забыли method="post"

1

Вы всегда будете хотеть, чтобы проверить значение/ошибки, как вы идете, чтобы ограничить время, которое вы должны провести отладку.

Например, было бы гораздо лучше практика, чтобы сделать что-то вроде этого:

if (isset ($_POST['member_id']) && !empty ($_POST['member_id'])) { 
    $member_id = $_POST['member_id']; 
} else { 
    echo 'Error: member_id not provided!'; 
} 

И вы хотите, чтобы сделать это для каждого поля. Кроме того, вы захотите создать некоторую проверку в своем коде (проверьте только номера, действительное форматирование, SQL-инъекцию и т. Д.), И приступите только к фактическому SQL, если вход был завершен, действителен и безопасен.

Это только самые основы, но начните с этого на вашем скрипте, и вы быстро поймете, где проблема.

Но более конкретно вам необходимо разместить содержимое своей HTML-формы, чтобы мы могли вам помочь.

EDIT: Также было бы неплохо начать форматирование ваших SQL-запросов таким образом, чтобы их было легче читать/отлаживать. С уважением, например, я бы написал так:

$qry = "UPDATE `members` 
     SET `username` = '$username', 
       `password` = '$password', 
       `bizname`  = '$bizname', 
       `phone`  = '$phone', 
       `email`  = '$email', 
       `url`   = '$url', 
       `contact`  = '$contact', 
       `notes`  = '$notes', 
       `sales_rep` = '$sales_rep', 
       `member_type` = '$member_type' 
     WHERE `member_id` = '$member_id'"; 

Вы также увидите, что я не использовал «$ вар.». внутри этого, потому что использование двойных кавычек в строке PHP позволяет вам напрямую ссылаться на переменные, тогда как если бы вы использовали одинарные кавычки, вам пришлось бы закончить строку и вставить эту переменную.

+0

Благодарим вас за полезные советы! – ZeLoubs

Смежные вопросы