gpt4 book ai didi

php - 使用 PHP 检查 MySQL 中是否存在多行

转载 作者:行者123 更新时间:2023-11-29 13:10:32 24 4
gpt4 key购买 nike

我目前正忙于一款基于文本的 RPG 游戏,但我现在卡在一个部分上。

为了开始任务,玩家确实需要一些元素,这些元素存储在一个字符串中:item:1x3-item:5x1 - (基本上是item:IDxamount)。我已经制作了将字符串分解为变量的函数,但现在脚本需要检查玩家是否拥有列出的所有项目。

我尝试使用 foreach 来解决这个问题,但是它会为每个项目返回正数或负数,而且我只需要知道玩家是否同时拥有所有项目。

(不要介意不安全的查询)$parseAmount 是一个数组,包含所有项目 ID。$uid 是一个包含 userID 的变量

// check if player has all items
foreach($parseAmount as $itemID)
{
$check_query = mysql_query("SELECT * FROM `player_items` WHERE `player`='$uid' AND `item`=='$itemID' AND `value`>='$parseAmount[1]'");
if(mysql_num_rows($check_query)>=1)
{return true;}
else
{return false;}
}

如果您希望我发布整个函数,请告诉我。

最佳答案

如果我正确理解你的问题,你需要这样的东西:

foreach($parseAmount as $itemID) {
$sql = "SELECT COUNT(*) AS count
FROM player_items
WHERE player = '".mysql_real_escape_string($uid)."'
AND item = '".mysql_real_escape_string($itemID)."'
AND value >= ".intval($parseAmount[1]);
$row = mysql_fetch_array(mysql_query($sql));

if ($row['count'] == 0) {
return false;
}
}
return true;

不得过早返回true。仅在检查所有项目后,您才知道结果为true。我的代码可以通过一次选择所有项目来改进,但这取决于您来构建它。

请记住我关于弃用 MySQL 扩展的评论,使用 MySQLi 和准备好的语句,它看起来像这样(请注意,我以前从未使用过 MySQLi,并在手册的帮助下构建了它):

foreach($parseAmount as $itemID) {
$sql = "SELECT COUNT(*) AS count
FROM player_items
WHERE player = ?
AND item = ?
AND value >= ?"
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssi", $uid, $itemID, $parseAmount[1]);
$stmt->execute();
$row = $stmt->get_result()->fetch_array();

if ($row['count'] == 0) {
return false;
}
}
return true;

关于php - 使用 PHP 检查 MySQL 中是否存在多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22161681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com