2014-04-27 8 views
-2

Hello :) 나는 그 좋은 프로그래머가 아닌 것처럼 보입니다. 그렇지 않으면 작동하지 않는 것 같습니다. 코드를 볼 수 있습니다.PHP가 작동하지 않는 경우

$pkt = mysql_query("SELECT meta_value FROM wp_usermeta WHERE user_id = $user_id AND meta_key='mycred_default'"); 
if ($pkt < $price OR $user_id == 0) 
{ 

$message = 'Sorry, you need more LPoints.'; 

    echo "<SCRIPT type='text/javascript'> 
     alert('$message'); 
     window.location.replace((\"http://sute.com/rp\")); 
    </SCRIPT>"; 
    mysql_close(); 
} 

그래서 pkt는 내 사용자가받는 변수입니다. 그가 자바 스크립트에있는 메시지를받는 가격보다 포인트 (pkt)가 적다면, 맞습니까? 글쎄 ... 작동하지 않아. 사용자가 $ pkt보다 더 많은 $ pkt를 얻더라도 그는 여전히 그 메시지를받습니다. 그러나 "<"을 ">"로 변경하면 가격보다 더 많은 포인트를 얻게되면 구매할 수 없습니다. 음 .. 다시 한번. $ pkt> $ price 스크립트를 설정하면 insctruction이 작동하지 않는 것처럼 스크립트가 건너 뛸 수 있습니다. 스크립트가없는 경우에도 스크립트가 계속 실행됩니다. 어떤 생각?

Regreds, 문제가있는 사람.

+4

http://www.php.net/manual/en/function.mysql-query.php – PeeHaa

+0

'$의 pkt' 수없는! "해야한다처럼 작동하지 않는다", 아니, 그것은 그렇게해서는 안된다. – Wh1T3h4Ck5

+0

'$ pkt'는 숫자가 아닌 true 또는 false를 반환합니다. – Zerquix18

답변

-1
$res = mysql_query("SELECT meta_value FROM wp_usermeta WHERE user_id = $user_id AND meta_key='mycred_default'"); 
$result = mysql_fetch_assoc($res); 
$pkt = $result['meta_value']; 
if ($pkt < $price || $user_id == 0) 
{ 

$message = 'Sorry, you need more LPoints.'; 

    echo "<SCRIPT type='text/javascript'> 
     alert('$message'); 
     window.location.replace((\"http://sute.com/rp\")); 
    </SCRIPT>"; 

} 
mysql_close(); 

PDO 예 :

<?php 
// Initialize the database connection 
$pdo = new PDO('mysql:host='.$your_hostname.';dbname=.'$your_db, $user, $pass, 
    array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 
    ) 
); 
$sql = "SELECT meta_value FROM wp_usermeta WHERE user_id = :user_id AND meta_key='mycred_default'"; 

// Create prepared statement 
$stm = $pdo->prepare($sql); 
$stm->bindParam(':user_id', $user_id, PDO::PARAM_INT); 
$stm->execute(); 

$pkt = $stm->fetchColumn(); 
if ($pkt < $price || $user_id == 0) 
{ 

$message = 'Sorry, you need more LPoints.'; 

    echo "<SCRIPT type='text/javascript'> 
     alert('$message'); 
     window.location.replace((\"http://sute.com/rp\")); 
    </SCRIPT>"; 

} 
+0

코드 스 니펫의 세 번째 줄에. null 예외를 피하려면 $ result [ 'meta_value']를 중심으로 isset을 사용해야합니다. –

+3

알렉세이, 또한 당신이 바보 같은 실수를하지 마세요 거짓 반환, PHP는 MySQL의 연결을 닫아야합니다. –

+0

감사합니다. 사람들이 저에게 그것에 대해 읽길 원했지만 그 코드에 대해 감사드립니다. fetch_assoc 함수에 대해 공부하겠습니다. 다음 5 분 안에 답을 수락 할 것입니다. – user3565273

관련 문제