mysqli_query 不区分 TRUE 和 FALSE
mysqli_query does not differentiate TRUE from FALSE
几个月前开始学习和工作PHP和MySQL,每天学一点点,有一个问题解决不了,找了很多。这很简单。直到昨天,我的代码 运行 都还不错,但我不知道自己做了什么。下面是我的问题所在的这部分代码的简化。
- 主要objective:
我需要在特定的 table (tab_classe
) 进行搜索。我需要这个查询 returns 只有在 之前存储在变量 ($turma
).
// table: tab_classe (id(INT), aluno(VARCHAR), prof(VARCHAR), turma(VARCHAR))
$turma = "A28";
$str = "select * from tab_classe
where turma LIKE '$turma'
limit 1
";
$qry = mysqli_query($conn,$str);
if ($qry !== FALSE){
echo "There is a register!";
}else{
echo "No registers!";
}
我尝试了很多变体,下面是最后一个:
if ($qry !== FALSE){
echo "There is a register!";
}else if ($qry !== TRUE{
echo "No registers!";
}
我在变量 $turma
中存储什么值并不重要,我的查询总是 return !== FALSE
,据我所知 return 存在一行 where turma LIKE '$turma'
,但即使存储和比较不存在的值,它 return 也始终为假。
mysqli_query()
将 return 一个 mysqli_result
对象。它只会 return FALSE
当查询出现问题并且您已将错误报告静音(这是默认设置)时。
检查 return 值不会产生任何有用的结果。
如果您想查看查询是否匹配任何行,则必须检查结果。但是,由于您应该始终使用准备好的语句,我将向您展示如何使用 PS.
$turma = "A28";
// We are only interested in the fact whether a single row exists
$str = "select * from tab_classe
where turma LIKE ?
limit 1";
$stmt = $conn->prepare($str);
$stmt->bind_param('s', $turma);
$stmt->execute();
$result = $stmt->get_result();
// now check the result by fetching the value
$row = $result->fetch_assoc();
if($row) {
// The query matched some records
} else {
// The query DID NOT match anything
}
几个月前开始学习和工作PHP和MySQL,每天学一点点,有一个问题解决不了,找了很多。这很简单。直到昨天,我的代码 运行 都还不错,但我不知道自己做了什么。下面是我的问题所在的这部分代码的简化。
- 主要objective:
我需要在特定的 table (tab_classe
) 进行搜索。我需要这个查询 returns 只有在 之前存储在变量 ($turma
).
// table: tab_classe (id(INT), aluno(VARCHAR), prof(VARCHAR), turma(VARCHAR))
$turma = "A28";
$str = "select * from tab_classe
where turma LIKE '$turma'
limit 1
";
$qry = mysqli_query($conn,$str);
if ($qry !== FALSE){
echo "There is a register!";
}else{
echo "No registers!";
}
我尝试了很多变体,下面是最后一个:
if ($qry !== FALSE){
echo "There is a register!";
}else if ($qry !== TRUE{
echo "No registers!";
}
我在变量 $turma
中存储什么值并不重要,我的查询总是 return !== FALSE
,据我所知 return 存在一行 where turma LIKE '$turma'
,但即使存储和比较不存在的值,它 return 也始终为假。
mysqli_query()
将 return 一个 mysqli_result
对象。它只会 return FALSE
当查询出现问题并且您已将错误报告静音(这是默认设置)时。
检查 return 值不会产生任何有用的结果。
如果您想查看查询是否匹配任何行,则必须检查结果。但是,由于您应该始终使用准备好的语句,我将向您展示如何使用 PS.
$turma = "A28";
// We are only interested in the fact whether a single row exists
$str = "select * from tab_classe
where turma LIKE ?
limit 1";
$stmt = $conn->prepare($str);
$stmt->bind_param('s', $turma);
$stmt->execute();
$result = $stmt->get_result();
// now check the result by fetching the value
$row = $result->fetch_assoc();
if($row) {
// The query matched some records
} else {
// The query DID NOT match anything
}