只需一点帮助,这是一个非常简单的问题,但它似乎不能正常工作。我只是将变量中的值与sql列中的所有值进行比较。就像我要将用户名输入与sql列中的用户名列表进行比较一样。然而,这仅仅是为了比较存储在该行的列中的项目ID不是已经在使用的项目ID。
我测试了我从sql查询中获取的值,它等于我在输入中输入的项ID。您将在下面看到的是实际测试,看看我回来的ID是否是我正在寻找的ID以及我可以找到该值的行的ID。我得到的结果是
2,000002(这是正确的)这就是我要找的。 p>
$itemId = $_POST['itemId'];
if($sqlItemId = $dbCon->query("SELECT * FROM CVCinStoreCoins WHERE itemId = '$itemId'")){
while($data = $sqlItemId->fetch_assoc()){
printf("<p>%s, %s</p>", $data['id'], $data['itemId']);
die();
}
然后我把它拿出来并试图比较变量中的值,该变量是已经存储的相同itemId(000002)。这就是我出错的地方。
我将代码修改为这样,以便进一步测试。看起来很直接但我得到一个FALSE响应,提供后一个echo语句&#34;项目ID未被使用&#34;但它在DB中。我根据我在stackoverflow中读到的内容尝试了几种不同的方法,但没有人给我正确答案。
$sqlItemId = $dbCon->query("SELECT * FROM CVCinStoreCoins WHERE itemId = '$itemId'");
if($itemId == $sqlItemId){
echo "This item id is already in use. \n";
die();
} else {
echo "Item Id is not in use:";
die();
}
有一次,我甚至尝试了一段时间语句来在测试之前获取相关值,但这并没有产生正面结果。有什么建议吗?
答案 0 :(得分:1)
在$sqlItemId
内,您拥有完整的表格行(如果有的话),而不仅仅是其ID;将SQL更改为计数并检查返回的行数(如果大于0,则表示重复):
$rowsCount = $dbCon->query("
SELECT COUNT(*)
FROM CVCinStoreCoins
WHERE itemId = '$itemId'
");
我不知道$dbCon
是什么(Doctrine DBAL?mysqli?)所以我无法告诉你如何使用查询的结果。
答案 1 :(得分:1)
Wy,你不算数,
$result = $dbCon->query("SELECT COUNT(itemId) FROM CVCinStoreCoins WHERE itemId = $itemId");
如果$ result&gt; 0