我正在尝试确保仅当false
的{{1}}为count
时,我的函数才会返回cc
。即使0
超过false
,我也会继续从count
获取0
。
我的功能:
function db_cc_exists($link, $cc) {
$sql = "SELECT count(*) as count FROM visitors WHERE cc = '$cc' LIMIT 1";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
$ret = $row[0];
mysqli_free_result($result);
return (intval($ret) == 0 ? FALSE : TRUE);
}
$link
是我的数据库的连接。
答案 0 :(得分:3)
$ ret($ row [0])是一个数组。使用$ ret [' count']
return (intval($ret['count']) == 0 ? FALSE : TRUE);
<强>更新强>
我相信我的原始回答实际上是错误的。
mysqli_fetch_array有2个参数 - 第二个是要返回的数组类型。默认值为MYSQLI_BOTH,它创建一个包含两个数字索引(在您的情况下使用元素&#39; 0&#39;)和关联索引(在您的情况下&#39;计数&#39;)的数组。
$row[0];
本应返回计数。
第二个参数的选项
/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
如果您按照原来的答案并使用intval($ret['count']
,则应该收到错误&#34;非法字符串偏移&#39;计数&#39;&#34;。
一个简单的测试是在设置var_dump($row)
语句后查看返回的内容。
你应该得到类似的东西:
array(2) { [0]=> string(5) "123" ["count"]=> string(5) "123" }
答案 1 :(得分:1)
您的查询会返回0
到记录数的任何值。所以尝试这样的条件。
请尝试像这样检查。
function db_cc_exists($link, $cc) {
$sql = "SELECT count(*) as count FROM visitors WHERE cc = '$cc' LIMIT 1";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result);
mysqli_free_result($result);
return ($row[0] ? TRUE : FALSE);
}