我正在使用SQLite3
和PHP
来创建一个小类,这意味着我不想要任何插件或其他类,只需要SQLite3
和PHP
目前我正在尝试从数据库中检索值,但我想检查是否有结果:
$select = $db->query("SELECT * FROM views WHERE address = '$ip' AND page = ''");
经过一番搜索,我找不到具体的内容,但我想我错过了。
首先我尝试了:
if($select){
// result returned
}else{
// no results
}
然后这个解决方案有效(前一个总是失败):
while($row = $select->fetchArray(SQLITE3_ASSOC) ){
$exists = TRUE;
break;
}
if($exists == TRUE){
// result returned
}else{
// no results
}
但这似乎很棘手......有没有办法检查选择查询是否返回了什么内容?
答案 0 :(得分:2)
你可以在"运行时":
中简单地解决它$emptyArr = array();
$filledArr = array(1,2,3,4,5);
if ($emptyArr) {
echo 'Empty array is not empty!';
}
if (!$filledArr) {
echo 'Filled array is empty!';
}
因为:http://php.net/manual/ru/sqlite3result.fetcharray.php 将返回填充数组或 false 。那么这是平等的:
$arr = array();
var_dump((false == $arr)); // true
特别适合所有头晕目眩者!令人难以置信的甜味蜂蜜解决方案:
if ($res = $select->fetchArray(SQLITE3_ASSOC)) {
foreach ($res as $item) {
// output
}
} else {
// nothing
}
答案 1 :(得分:0)
if(!empty($var)){
// Variable is not empty and is set
}
if(isset($var)){
// Variable is set, may be empty though.
}
if(empty($var)){
// Variable is not set or is empty.
}
if(!isset($var)){
// Variable is not set.
}
这也适用于数组和数组键。
答案 2 :(得分:0)
Theres一个名为* - > numRows()的函数;
http://php.net/manual/en/function.sqlite-num-rows.php
返回从数据库中提取的行数。我不使用sqlite,但我非常确定dbquery从数据库中返回一个值数组(在这种情况下是一个对象),如果成功与否则返回true / false。
尝试:
$select = $db->query("SELECT * FROM views WHERE address = '$ip' AND page = ''");
$rows = $select->numRows();
echo $rows; //returns # of rows
or
if ($rows){
//return anything but 0 would eval true..
}
答案 3 :(得分:0)
没有人给出完美的答案,但每一条评论都帮助我做到了。因此,如果您遇到同样的问题,请检查所有评论,然后检查我的答案。来自@Deep的特别帮助
if($select->fetchArray(SQLITE3_ASSOC)){
// results returned
}else{
// no results. empty.
}}