1

我正在尝试设置一个 if 条件,如果 $flag < 1 将呈现一个道歉.php。但是似乎即使 $flag>1 也会触发条件。有人知道问题吗?

这是我的 php 代码。

$flag = query("SELECT flag FROM friend WHERE id = ? AND username = ? ",$_SESSION["id"],$username[0]["username"]);



if($flag[0]["flag"] < 1 ||$flag = false); 
{
 apologize("Sorry! He/she is not your friend.");
} 

这是我的函数 query() 的代码

function query(/* $sql [, ... ] */)
{
    // SQL statement
    $sql = func_get_arg(0);

    // parameters, if any
    $parameters = array_slice(func_get_args(), 1);

    // try to connect to database
    static $handle;
    if (!isset($handle))
    {
        try
        {
            // connect to database
            $handle = new PDO("mysql:dbname=" . DATABASE . ";host=" . SERVER, USERNAME, PASSWORD);

            // ensure that PDO::prepare returns false when passed invalid SQL
            $handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
        }
        catch (Exception $e)
        {
            // trigger (big, orange) error
            trigger_error($e->getMessage(), E_USER_ERROR);
            exit;
        }
    }

    // prepare SQL statement
    $statement = $handle->prepare($sql);
    if ($statement === false)
    {
        // trigger (big, orange) error
        trigger_error($handle->errorInfo()[2], E_USER_ERROR);
        exit;
    }

    // execute SQL statement
    $results = $statement->execute($parameters);

    // return result set's rows, if any
    if ($results !== false)
    {
        return $statement->fetchAll(PDO::FETCH_ASSOC);
    }
    else
    {
        return false;
    }
}
4

3 回答 3

2

你的问题有两个

首先;,您的 if 语句末尾有一个。

其次,您正在设置$flag = false而不是比较它$flag == false。您可能想使用==相等运算符进行比较。

于 2013-04-01T14:32:09.530 回答
0

$flag = false应该是$flag == false, !$flagor $flag === false, 理想情况下应该是在您尝试将其作为数组访问之前:

if( !$flag || $flag[0]['flag'] < 1)

你还有一个额外的;- 这实际上是我之前固执地拒绝换行的确切原因{

于 2013-04-01T14:32:30.393 回答
0

您不能使用=as 运算符,因为true如果可以将变量设置为,它就会返回false。使用==.

于 2013-04-01T14:33:30.223 回答