仅当count为0时才返回false

时间:2015-12-07 04:32:53

标签: php sql select return

我正在尝试确保仅当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是我的数据库的连接。

2 个答案:

答案 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);
}