为什么这个函数总是返回 true,即使它不应该返回?



我有一个函数,它遍历product数据库表,如果有一行的supplieridname与参数匹配,则返回true。

但它总是返回真的,即使它不应该。

function checkifhoused($productname, $supplier)
{
$db = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
$sql = "SELECT * FROM " . TBL_PRODUCTS;
$result = mysqli_query($db, $sql);
while ($row = $result->fetch_assoc()) {
if ($row['supplierid'] == $supplier and $row['name'] == $productname) {
return true;
}
}
return false;
}

首先:我可以建议您使用PDO扩展。它有更好的变量绑定选项。第二:作为@pavel&Ro Achterbeg在他们的评论中提到,您不需要从DB表中提取所有行,而是只检查具有针状参数的记录是否存在

<?php
define('TBL_PRODUCTS', 'TBL_PRODUCTS');
function checkifhoused($db, $productname, $supplier)
{
$sql="SELECT * FROM ".TBL_PRODUCTS." WHERE name = ? AND supplierid = ? ";
$stmt = $db->prepare($sql);
$result = $stmt->execute([$productname, $supplier]);
return $stmt->rowCount() > 0;
}
var_dump(checkifhoused($pdo, 'productname', 1));
var_dump(checkifhoused($pdo, 'other_productname', 1));

在这里,您可以测试PHP&SQL代码

最新更新