我正在为我的网站添加一个计数器。 在代码中,我检查是否存在带有帖子ID的IP。
例如,当发布ID为26,并且我的IP表中没有ID为26的IP时,它应该返回0,但返回1。
<ion-header>
<ion-navbar color="danger">
<ion-buttons start>
<button ion-button icon-only menuToggle>
<ion-icon name="menu">
</ion-icon>
</button>
</ion-buttons>
</ion-navbar>
<ion-menu [content]="content">
<ion-content padding>
this is awkmal
</ion-content>
</ion-menu>
</ion-header>
<ion-nav #content></ion-nav>
答案 0 :(得分:5)
假设您正在使用PDO
在这里,您使用准备好的语句来查询数据库,但没有获取数据库返回的结果
使用
$result = $checkIp->setFetchMode(PDO::FETCH_ASSOC);
if(count($result) > 0){
.............
}
else{
..........
}
使用起来更简单
$checkIp->rowCount()
这将返回您的查询所影响的行数
答案 1 :(得分:2)
$checkIp->execute();
始终返回布尔值,因此这里的条件是错误的。检查文档http://php.net/manual/en/pdostatement.execute.php像这样使用
$userIp = $_SERVER['REMOTE_ADDR'];
$checkIp = $db->prepare("SELECT user_ip FROM user_ip WHERE word_id = '$idToShow'");
$result=$checkIp->execute();
if (!$result) {
echo count($checkIp);
echo " ". $idToShow;
}else {
$insertIP = $db->prepare("INSERT INTO user_ip (user_ip, word_id) values('$userIp', '$idToShow')");
$insertIP->execute();
$updateView = $db->prepare("UPDATE words set views = views + 1 WHERE id = '$idToShow'");
$updateView->execute();
}
答案 2 :(得分:2)
execute()
方法运行查询将返回布尔值,以指示查询是否成功。
您可以使用rowsCount()
对行进行计数,也可以fetchAll()
然后对结果进行计数。
您应该使用类似的东西
$checkIp->execute();
if ($checkIp && $checkIp->rowsCount() > 0) {
// ...
}
OR
$checkIp->execute();
$ips = $checkIp->fetchAll();
if (count($ips) > 0) {
// ...
}
http://php.net/manual/en/pdostatement.execute.php
http://php.net/manual/en/pdo.prepare.php
答案 3 :(得分:1)
代替此
if (count($checkIp) > 0)
使用
if(isset($checkIp->user_ip) && !empty($checkIp->user_ip))
答案 4 :(得分:1)
与PHP doc一样,执行retunr TRUE或False
$checkIp->execute();
所以您的
(count($checkIp)
仅计算在这种情况下contai只是一个值的var内容
答案 5 :(得分:1)
$checkIp
是一个对象,并且会始终(假设您的准备工作成功)返回非零计数。您想要的(假设您正在使用mysqli
)是$checkIp->num_rows
。如果您使用的是PDO
,则需要$checkIp->rowCount()
。