首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较操作符以检查MySQL字段是否等于零

比较操作符以检查MySQL字段是否等于零
EN

Stack Overflow用户
提问于 2015-10-08 01:44:18
回答 2查看 217关注 0票数 0

维护一个青年体育联盟网站,通过HTML前端显示日程和排名,并使用PHP与MySQL后端数据库进行通信。几年来一切都进行得很好,但最近我遇到了一个大问题,因为很多次的报道都是无意中的,我正试图填补允许这种情况发生的漏洞。

下面是我试图添加到分数报告脚本中的PHP代码的一个小片段。这样做的目的是查询MySQL数据库,并查看所选游戏的主场和客场得分目前是否为"0“。如果是的话,分数还没有报告,脚本可以执行。但是,如果它们是任何其他值,那么我希望脚本停止。

测试时,无论游戏是否已经报告,脚本都会使用“已经报告”的消息终止。--我相信我想要实现的比较操作符有问题。有人能指出我似乎遗漏的代码有什么明显的地方吗?小小的指导是非常感谢的!

代码语言:javascript
复制
// Check to see if game has already been reported:
$qh = "SELECT home_score FROM $table WHERE game_id=$row[0]";
$hscore = mysqli_query($db, $qh);
$qa = "SELECT away_score FROM $table WHERE game_id=$row[0]";
$ascore = mysqli_query($db, $qa);
if ($hscore != 0 || $ascore != 0) {
    echo "The scores for this game have already been reported. Please try refreshing your browser on the schedule page to verify.";
} else {
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-08 02:50:58

只需编写一个查询来获取两个分数,然后您就可以轻松地比较它们以显示您想要的结果。

代码语言:javascript
复制
// Check to see if game has already been reported:
$q = "SELECT home_score, away_score FROM $table WHERE game_id=$row[0]";
$result = mysqli_query($db, $q);
$scores = $result->fetch_assoc();
if ($scores['home_score'] != 0 || $scores['away_score'] != 0) {
    echo "The scores for this game have already been reported. Please try refreshing your browser on the schedule page to verify.";
} else {

fetch_assoc()方法以关联数组的形式获取从MySQL返回的结果的第一行,这使得它更好、更易于使用。:)

票数 1
EN

Stack Overflow用户

发布于 2015-10-08 02:05:52

函数mysqli_query返回一个mysqli_result object,因此您需要获取它以获得实际值。我想这样就行了。

代码语言:javascript
复制
$qh = "SELECT home_score FROM $table WHERE game_id=$row[0]";
$hscore = mysqli_stmt_fetch(mysqli_query($db, $qh));
$qa = "SELECT away_score FROM $table WHERE game_id=$row[0]";
$ascore = mysqli_stmt_fetch(mysqli_query($db, $qa));
if ($hscore['home_score'] != 0 || $ascore['away_score'] != 0) {
    echo "The scores for this game have already been reported. Please try refreshing your browser on the schedule page to verify.";
} else {

另一种方法是确保分数大于0。

代码语言:javascript
复制
SELECT home_score FROM $table WHERE game_id=$row[0] and home_score > 0

然后,你需要知道,如果你得到一排回来,分数大于0。

我认为这种方法是你最好的方法(未经测试)。

代码语言:javascript
复制
$qh = "SELECT home_score, away_score FROM $table WHERE game_id=?";
$hscore = mysqli_prepare($db, $qh);
mysqli_stmt_bind_param($hscore, 'i', $row[0]);
mysqli_stmt_execute($hscore);
$unique_row = mysqli_fetch_row($hscore);
if ($unique_row['home_score'] != 0 || $unique_row['away_score'] != 0) {
    echo "The scores for this game have already been reported. Please try refreshing your browser on the schedule page to verify.";
} else {

假设$row[0]是一个整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33005253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档