0

在我的一生中,我一直在使用它很长时间,我已经完成了许多有效的更新,但由于某种原因,它不适用于这段代码:

如果有人能看出它有什么问题,请帮助我。我有点卡住了:

if (isset($_POST['membership'])){

    $accTypeID = getAccTypeID($db, $_POST['membership']);
    $res = pg_query("SELECT * FROM accounts where username='" .$_SESSION['username']. "'");
    $rec = pg_fetch_row($res);
    if($res > 0){
        pg_query("UPDATE accounts SET paymentdate ='" .date("Y-m-d"). "', 
        accounttype_id=$accTypeID 
        WHERE username='" .$_SESSION['username']. "'");
        $p->addContent('Purchasing has succeeded.');
    }

}   

我在我的网站上运行它,它说它可以工作,但是当我检查我的数据库时,没有任何更新,我的控制台产生了这个错误:

pg_query(): 查询失败: 错误: "WHERE" 或附近的语法错误\nLINE 3: WHERE username='anuj'

4

1 回答 1

0

使用参数化查询。您的问题是 $accTypeID 可能是空值或未定义。如果发生这种情况,那么将用户名设置为bob' or true将导致购买始终成功。

始终使用参数化查询。它也会纠正这样的事情,因为 undef 应该被视为NULL或至少被视为''

于 2013-11-17T08:41:28.527 回答