2014-09-21 5 views
0

В моей базе данных У меня есть мои пользователи, у каждого из которых есть своя сумма «золота», я сделал кнопку, которая увеличивает количество золота у них на 100 за каждый клик на Это. Проблема в том, что я не могу понять, как это сделать для конкретного зарегистрированного пользователя. Вот мой текущий код обновленияНевозможно обновить строку базы данных в соответствии с конкретным пользователем

$addgold2 = mysqli_query($con,"UPDATE stats SET stats.gold = stats.gold + 100 WHERE stats.id=$retval2"); 

Если я удаляю «$ retval2» и вводя только идентификатор, он работает. Я хочу вызвать идентификатор для зарегистрированного пользователя, а затем обновить только эту статистику. Вот код, у меня есть для него

$id2 = "SELECT users.id FROM users WHERE users.username=$username"; 
$retval2 = mysqli_query($con,$id2); 

Теперь, если я эхо $ ID2, это показывает идентификатор «1», но это не 1! это 7 :(

Я также получаю эту ошибку

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\wamp\www\Game\addgold.php on line 19 

На первой строке кода, который я поставил

И, наконец, вот весь код (форма находится на другой странице)

<?php error_reporting(E_ALL); ini_set('display_errors', 1); 
include("connect.php"); 
include("header.php"); 
$username = $_SESSION['userlogin']; 
$id2 = "SELECT users.id FROM users WHERE users.username=$username"; 
$retval2 = mysqli_query($con,$id2); 
$sql = "SELECT stats.id, stats.gold, users.id, users.username FROM stats, users WHERE users.username  = '$username' AND stats.id = users.id"; 
$retval = mysqli_query($con,$sql); 
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC)) 
{ 
    echo "Gold: {$row['gold']} <br> ". 

     "--------------------------------<br>"; 
} 
$row2 = mysqli_fetch_row($retval2); 
$id2 = mysqli_num_rows($retval2) or die(mysql_error()." ".$id2); 
echo $id2; 
if(isset($_SESSION['userlogin'])){ 
$addgold2 = mysqli_query($con,"UPDATE stats SET stats.gold = stats.gold + 100 WHERE  stats.id=$retval2"); 
if(isset($addgold2['submit'])){ 

} 

echo "You have earned 100 gold!"; 
mysqli_close($con); 


} 

?> 

ответ

1

вы пропустили одинарную кавычку в вашем $id2 SQL

$id2 = "SELECT users.id FROM users WHERE users.username='$username'"; 
+0

Я не думаю, что это имело значение, но все равно попробовал и не работал :(все еще показывающий неправильный ID –

+0

по-прежнему получают ту же ошибку? – worldask

+0

Да, к сожалению, ничего не изменилось. Думаю, ответ Бобби Стенли поможет , так что попробуйте, что atm –

1

$ retval2 на вашей 19-й строке не является идентификатором, который вы ищете.

$id2 = mysqli_num_rows($retval2) or die(mysql_error()." ".$id2); 

он возвращает 1, если он имеет 1 ряд .. не ID

$addgold2 = mysqli_query($con,"UPDATE stats SET stats.gold = stats.gold + 100 WHERE  stats.id=$retval2"); 

в $ retval2 является mysqli_query результат, и то не ID Я думаю, что $ row2 [ "ID"] является Ваш ID.

+0

Не знаю, как я не понял, что LOL Я пытаюсь повторить строку2 теперь «$ row2 = mysqli_fetch_row ($ retval2);», но теперь получим «Notice: Массив для преобразования строк» ​​-, - –

+0

Изменено "$ row2 = mysqli_fetch_array ($ retval2, MYSQL_ASSOC);" но все равно то же самое, думал, что сортирует его –

+0

Извините, но я получил работу эха !! "echo $ row2 [" id "];", но как мне отобразить этот идентификатор в запросе обновления? –

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