2014-09-21 3 views
0

내 데이터베이스에는 각 사용자가 "금"을 가지고있는 사용자가 있으며 각 클릭마다 100 개의 금을 증가시키는 버튼을 만들었습니다 그것. 문제는 특정 로그인 한 사용자를 위해이를 수행하는 방법을 파악할 수 없다는 것입니다. 나는 "$의 retval2"입력 단지 ID를 제거하면 여기 내 현재 업데이트 코드특정 사용자에 따라 데이터베이스 행을 업데이트 할 수 없음

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

, 그것은 작동합니다. 로그인 한 사용자의 ID를 호출 한 다음 해당 통계 만 업데이트하려고합니다. 내가 가지고있는 코드는 다음과 같습니다

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

이제 $ id2가 표시되면 ID가 "1"이지만 1이 아닌 것을 보여줍니다! 그것이 내가 또한

마지막을 넣었습니다 I 코드의 첫 번째 줄에이 오류

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

를 얻을 수 7 :(

있어, 여기

(형태가 다른 페이지에) 전체 코드입니다
<?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

바비 스텐리 (Bobby Stenly)의 대답이 도움이 될 것이라고 생각합니다. 그래서 atm –

1

귀하의 19 번째 줄에 $ retval2은 (는) 찾고 계신 ID가 아닙니다.

$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 결과이고, I는 $ ROW2는 [ "ID가"]가 생각 ID 하지 이잖아 너의 아이디.

+0

어떻게 내가 그 row2를 "$ row2 = mysqli_fetch_row ($ retval2);"에코하려고했는지 모르겠다. "Notice : Array to string conversion"-, - –

+0

로 변경됨 "$ row2 = mysqli_fetch_array ($ retval2, MYSQL_ASSOC);"하지만 여전히 똑같은 생각으로 정렬 할 것입니다. –

+0

미안하지만 에코가 작동합니다 !! "echo $ row2 ["id "];"하지만 업데이트 쿼리에 해당 ID를 어떻게 표시합니까? –

관련 문제