그래서, 나는 동일한 db에서 실행되는 2 개의 스크립트를 가지고 있지만, 각각은 자신의 테이블 (예 : 사용자, 게시물 등)을 가지고 있으며 포인트 시스템을 가지고 있습니다.다른 테이블에 추가하는 동안 한 테이블에서 값을 빼는 방법은 무엇입니까?
이제 내가하고 싶은 것은 점을 하나씩 보낼 수있게 만드는 것입니다. 이름과 점수가 기입 된 간단한 양식을 작성했습니다. 제출할 때 정보를 처리 할 다른 페이지로 보내고 주어진 금액을 사용자에게서 빼고 (세션을 확인할 것임) 보내는 것보다 (다른 스크립트에 등록 된) 주어진 이름으로.
좋아요, 처리 할 때 포인트가 제거됩니다 (또는 포인트가 충분하지 않으면 "포인트가 충분하지 않음"오류가 발생하지만 포인트는 다른 계정에 적립되지 않습니다). 해결할 수 있습니까?
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/points');
$pointst1 = request_var('pointst', 0);
$bsname1 = request_var('bsname', 0);
if ($user->data['user_points'] < $pointst1){
echo "<b>You don't have enough points</b>";
}
else {
remove_points($user->data['user_id'], $pointst1);
mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'");
echo "<b>Points tranferred!</b>";
};
?>
새 응용 프로그램에서 mysql_query를 사용하지 말고 [PDO] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using)를 사용하십시오. -phps-pdo-for-database-access /)를 사용하십시오. 또한, 심각한 피해를 입기 전에 [적절한 SQL 탈출] (http://bobby-tables.com/)을 읽어보십시오. – tadman
두 번째 사용자가있는 경우 두 번째 사용자를 찾아서 이름 대신 사용자 쿼리를 사용해야합니다. intval()에서 $ pointst1을 감싸서 숫자를 적용한 다음 업데이트하기 전에 0 또는 음수를 확인해야합니다. – Revent
각 요청 후에 mysql_error를 호출하면 어떻게됩니까? http://php.net/manual/en/function.mysql-error.php – didierc