PHP,如果不工作

PHP,如果不工作,php,if-statement,Php,If Statement,你好:看来我不是一个很好的程序员,如果它不能正常工作的话。让我们看看代码 $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 "&

你好:看来我不是一个很好的程序员,如果它不能正常工作的话。让我们看看代码

$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分数低于他得到的javascript消息的价格,对吗?好它不起作用了。即使我的用户得到的$pkt比$price多,他仍然会收到这条消息。但当我改变的时候,这意味着如果他得到的分数超过价格,他就不能买,对吗?好再也不会了。如果我设置$pkt>$price脚本只是跳过这个If指令,并且表现得好像它甚至不在那里,所以它只是继续脚本。有什么想法吗

抱歉, 有问题的家伙

$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>";

}

$pkt不是一个数字!不,它不应该那样工作。$pkt只是返回true或false,而不是一个数字。你不能将mysql_查询对象与那样的随机变量进行比较。我明白了。我真的是个新手。我想,如果我现在用phpadmin获得数字,我发现这不是一个真正的数字,它会起作用。我该怎么做?在代码段的第三行。您应该在$result['meta_value']附近使用isset来避免空异常。Alexey,即使条件返回false,您也必须关闭mysql连接,请不要犯愚蠢的错误。谢谢您,正在工作!我知道有人想让我读一下,但是谢谢你的代码。我将学习fetch_assoc函数。在接下来的5分钟内,我将接受您的答案。>在代码片段的第三行。您应该在$result['meta_value']周围使用isset,以避免出现空异常。例外因为什么?你的意思是警告吗?>Alexey,即使条件返回false,也必须关闭mysql连接,请不要犯愚蠢的错误。是的,你是对的,我没有注意它,因为它显示了一般原则,但你当然是对的。