$ mds> = $ preco的行似乎不起作用,它总是返回true或echo" COMPRADO" ...
当$ mds为<时,它会给我另一条消息$ preco但它不是
$ preco位于另一个文件中:
$preco = $row['pret'];
PHP:
$sql= mysql_query("SELECT vnum, pret, attrtype0, attrvalue0, attrtype1, attrvalue1, attrtype2, attrvalue2, attrtype3, attrvalue3, attrtype4, attrvalue4, attrtype5, attrvalue5, attrtype6, attrvalue6, socket0, socket1, socket2 FROM dev_is_items WHERE id='$id'") or die(mysql_error());
if(mysql_num_rows($sql)==1) {
$conn = mysql_connect($db_host, $db_username, $db_pass);
mysql_select_db("$db_name") or die("no database by that name");
$mdsquery = mysql_query("SELECT coins FROM account.account WHERE id='".mysql_real_escape_string($_SESSION['user_id'])."' LIMIT 1");
$mds = mysql_fetch_object($mdsquery);
if($mds>=$preco){
echo "COMPRADO";
}else{
echo "MOEDAS INSUFICIENTES";
}
答案 0 :(得分:0)
mysql_fetch_object()
不会返回coins
字段的值。它返回一个对象。如果要检查coins
字段的值,请执行以下操作:
if ($mds->coins > $preco) { …
您还应该知道mysql_fetch_object
已被弃用。您不应使用任何mysql_*
函数。相反,请使用mysqli_*
函数,或者更好的是PDO。
使用mysql_real_escape_string
来防止SQL注入攻击是件好事。但是,更好和更现代的解决方案是使用PDO的参数绑定。有关示例,请参阅PDOStatement::bindValue
方法。
最后,您的价格检查似乎存在逻辑错误。我假设$preco
是硬币中商品的价格,$coins
是用户拥有的硬币数量。如果是这种情况,那么你想要:
if ($mds->coins >= $preco) { …
请注意>=
。否则,用户将无法购买该商品,除非他们更多的硬币而不是商品的费用。