2014-01-22 1 views
0
<?php 
    if($_SESSION['id']) { 
       $result = mysql_query(" 
    SELECT 
     id,usr,pass,email,dt,priv 
    FROM 
     tz_members 
    WHERE 
     usr = '" . $_SESSION['usr'] . "' 
"); 
$done=0; 
       while($row = mysql_fetch_array($result)) 
       { 
       echo '<div class="roundbox"><div class="grey"><h2>Change Username</h2><br>Below you can view your current informations.<br>This page allows you to change your username!<br><table>'; 
       echo "<tr><td><strong>Unique ID:</strong></td><td>" . $row['id'] . "</td><em><td>(Can't be seen by others!)</em></td></tr>"; 
       echo "<tr><td><strong>Username:</strong></td><td>" . $row['usr'] . "</td><em><td>(Can be seen by others!)</em></td></tr></table><br>"; 
       echo '<form action="edituser.html" method="post"> 
         <div class="grey">New Username:</div><br> 
         <input type="text" name="newuser" size="20" maxlength="40" value=""><br><br> 
         <input type="submit" name="submit" value="Change"></div> 
         </form></table>'; } 
if($_POST['submit']=='Change') { 
$usr = $_SESSION['usr']; 
$query="SELECT usr FROM tz_members WHERE usr = '$usr'"; 
$st=mysql_query($query); 
$recs=mysql_num_rows($st); 
$row=mysql_fetch_object($st); 
$newuser = $_POST['newuser']; 
mysql_query("UPDATE tz_members 
SET 
$row->$usr 
WHERE 
usr = $usr"); 
$done=1; 
} 

if($done == 1) 
Header("Location: login_panel/userchanged.html"); 
} 
    else echo '<div class="roundbox"><h2>You must be <a href="login.html">logged in</a> to change your username!</h2></div>'; 
    ?> 

У меня есть следующий код. Я пытаюсь сделать это, когда вы завершаете поле «newuser» и нажимаете кнопку «Изменить», его имя пользователя (имя пользователя написано в $ _SESSION ['usr]) заменяется на пользователя в' newuser ' поле. Но он продолжает неудачу, еще более у меня есть следующее сообщение об ошибке:Изменение имени пользователя в базе данных

Catchable fatal error: Object of class stdClass could not be converted to string in /home/u594115708/public_html/edituser.html on line 129

+0

Какая линия линии 129? – giordanolima

+0

$ query = "SELECT usr FROM tz_members WHERE usr = '$ usr'"; –

+0

попробуйте этот $ query = "SELECT usr FROM tz_members WHERE usr = '". $ Usr. "'"; – giordanolima

ответ

0

Изменить эту строку:

mysql_query("UPDATE tz_members SET $row->$usr WHERE usr = $usr"); 

Для этого:

mysql_query("UPDATE tz_members SET usr = '{$newusr}' WHERE usr = '{$usr}'"); 

также добавить в начало сценария PHP :

session_start(); 
+0

Ваш запрос atleast выполняет часть задания: Он выбирает пользователя, но устанавливает его значение. ничего, что может быть проблемой? –

+0

$ newuser = $ _POST ['newuser']; ниже эта строка попробуйте с var_dump ($ newuser); и опубликовать результат PLS – Hackerman

+0

Получил значение var_dump, $ newuser. –

1

$_SESSION['usr'] является объектом, а не скалярная переменная. Значение, которое вы ищете, находится внутри этого объекта. Я угадывание это может быть достигнуто с помощью:

$_SESSION['usr']->user; 

Так что строка кода должна выглядеть следующим образом:

$usr = $_SESSION['usr']->user; 
+0

Эта строка вызывает проблему: $ query = "SELECT usr FROM tz_members WHERE usr = '$ usr'"; Первый запрос хорош, так как я использую его также на странице участников. –

+0

Просто поймал и обновил свой ответ –

0

$usr не переписывается, потому что ваши $_SESSION переменные не доступны, так как вы не вызывали session_start() в начале вашего скрипта.

Добавить session_start() в начале, например, так:

<?php 

session_start(); 

... 
+0

У меня есть отдельный для этого, спасибо за ваше время в любом случае :) –

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

  • Нет связанных вопросов^_^