Select 在我的函数中总是存在 returns true。 select exists 还有效吗?
Select exists always returns true in my function. Does select exists still work?
我稍微修改了我在 Whosebug answer 上找到的 Select Exists 函数,但无论我尝试什么,我的后续函数总是给出 $sqlResult
true
。即使我已经删除了数据库中除了两个条目之外的所有条目。
select exists 还有效吗?
Whosebug 系统建议的所有答案都不要回答问题,而是建议使用检查返回的行数,而不是根本不使用 exists。 (或者他们提供的链接不解释 Exists-result 真正代表什么。
function uniquedoesexist($dbHandle,$tablename,$fieldname,$value)
{
$sql = 'SELECT EXISTS(SELECT * FROM `' . $tablename .
'` WHERE `'.$fieldname.'` = ?
LIMIT 1
)';
$stmt = mysqli_prepare($dbHandle, $sql);
mysqli_stmt_bind_param($stmt, 's',$value);
$sqlResult = mysqli_stmt_execute($stmt);
echo '$sqlResult: ' . $sqlResult.$br;
return $sqlResult;
}
With: username Index varchar(255) utf8_german2_ci
抱歉我的初学者问题。
字段名的条目设置为唯一。
您需要通过以下方式获取查询结果:
function uniquedoesexist($dbHandle, $tablename, $fieldname, $value) {
$sql = 'SELECT EXISTS(SELECT * FROM `'.$tablename.'` WHERE `'.$fieldname.'` = ? LIMIT 1)';
$stmt = mysqli_prepare($dbHandle, $sql);
mysqli_stmt_bind_param($stmt, 's',$value);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $data);
mysqli_stmt_fetch($stmt);
echo "SqlResult for $value: " . $data . PHP_EOL;
return $data;
}
另一种方法是获取返回的行数 SELECT EXISTS
:
<?php
function uniquedoesexist($dbHandle, $tablename, $fieldname, $value) {
$sql = 'SELECT * FROM `'.$tablename.'` WHERE `'.$fieldname.'` = ? LIMIT 1;';
$stmt = mysqli_prepare($dbHandle, $sql);
mysqli_stmt_bind_param($stmt, 's',$value);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$found = mysqli_stmt_num_rows($stmt);
echo "SqlResult for $value: " . $found . PHP_EOL;
return $found;
}
我稍微修改了我在 Whosebug answer 上找到的 Select Exists 函数,但无论我尝试什么,我的后续函数总是给出 $sqlResult
true
。即使我已经删除了数据库中除了两个条目之外的所有条目。
select exists 还有效吗?
Whosebug 系统建议的所有答案都不要回答问题,而是建议使用检查返回的行数,而不是根本不使用 exists。 (或者他们提供的链接不解释 Exists-result 真正代表什么。
function uniquedoesexist($dbHandle,$tablename,$fieldname,$value)
{
$sql = 'SELECT EXISTS(SELECT * FROM `' . $tablename .
'` WHERE `'.$fieldname.'` = ?
LIMIT 1
)';
$stmt = mysqli_prepare($dbHandle, $sql);
mysqli_stmt_bind_param($stmt, 's',$value);
$sqlResult = mysqli_stmt_execute($stmt);
echo '$sqlResult: ' . $sqlResult.$br;
return $sqlResult;
}
With: username Index varchar(255) utf8_german2_ci
抱歉我的初学者问题。 字段名的条目设置为唯一。
您需要通过以下方式获取查询结果:
function uniquedoesexist($dbHandle, $tablename, $fieldname, $value) {
$sql = 'SELECT EXISTS(SELECT * FROM `'.$tablename.'` WHERE `'.$fieldname.'` = ? LIMIT 1)';
$stmt = mysqli_prepare($dbHandle, $sql);
mysqli_stmt_bind_param($stmt, 's',$value);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $data);
mysqli_stmt_fetch($stmt);
echo "SqlResult for $value: " . $data . PHP_EOL;
return $data;
}
另一种方法是获取返回的行数 SELECT EXISTS
:
<?php
function uniquedoesexist($dbHandle, $tablename, $fieldname, $value) {
$sql = 'SELECT * FROM `'.$tablename.'` WHERE `'.$fieldname.'` = ? LIMIT 1;';
$stmt = mysqli_prepare($dbHandle, $sql);
mysqli_stmt_bind_param($stmt, 's',$value);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$found = mysqli_stmt_num_rows($stmt);
echo "SqlResult for $value: " . $found . PHP_EOL;
return $found;
}