php - 为什么这个 PHP while 查询不起作用?

标签 php mysql

我有这个简单的预排序数据库输入的东西,我之前创建过这个,我搞砸的是 while 方面。

有两个不同的表:一个跟踪关键字频率的表和一个用于与关键字配对的条目本身的表。

我正在做的是通过关键字保存某些内容,我检查关键字是否存在,如果存在,我增加该关键字的计数,然后继续将条目添加到条目数据库,如果不存在,我创建一个在关键字表中新建该关键字的条目并将计数设置为1,然后将该条目添加到条目数据库中。

$query = "SELECT COUNT(*) FROM key WHERE key=?";
if($stmt = $link->prepare($query)){
    $stmt->bind_param('s',$key);
    $stmt->execute();
    while ($row = $stmt->fetch_row()){
        $count = $row[0];
    }

    // count comes out here
    // echo $count;
    if($count==0){
        // insert new entry
        $stmt = mysqli_prepare($link, "INSERT INTO entry VALUES (?,?,?,?,?)");
        $stmt->bind_param('issss',$id,$poster,$key,$entry,$date);
        $stmt->execute();

        // insert new key
        $stmt = mysqli_prepare($link, "INSERT INTO key VALUES (?,?,?)");
        $stmt->bind_param('isi',$id,$key,$numtimes);
        $stmt->execute();
    } else {
        // insert new entry
        $stmt = mysqli_prepare($link, "INSERT INTO entry VALUES (?,?,?,?,?)");
        $stmt->bind_param('issss',$id,$poster,$key,$entry,$date);
        $stmt->execute();

        // update key count
        $stmt = mysqli_prepare($link, "UPDATE key SET numtimes=key+1 WHERE key=$key");
        $stmt->bind_param('s',$key);
        $stmt->execute();
    }
} 

最佳答案

<?php
$query = "SELECT COUNT(*) FROM key WHERE key=?";
if($stmt = $link->prepare($query)){
    $stmt->bind_param('s', $key);
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_row()){
        $count = $row[0];
    }
    $stmt->close();

    // count comes out here
    // echo $count;
    if($count == 0){
        // insert new entry
        $stmt = mysqli_prepare($link, "INSERT INTO entry VALUES (?,?,?,?,?)");
        $stmt->bind_param('issss', $id, $poster, $key, $entry, $date);
        $stmt->execute();

        // insert new key
        $stmt = mysqli_prepare($link, "INSERT INTO key VALUES (?,?,?)");
        $stmt->bind_param('isi',$id,$key,$numtimes);
        $stmt->execute();
        $stmt->close();
    } else {
        // insert new entry
        $stmt = mysqli_prepare($link, "INSERT INTO entry VALUES (?,?,?,?,?)");
        $stmt->bind_param('issss',$id,$poster,$key,$entry,$date);
        $stmt->execute();

        // update key count
        $stmt = mysqli_prepare($link, "UPDATE key SET numtimes=key+1 WHERE key=$key");
        $stmt->bind_param('s',$key);
        $stmt->execute();
        $stmt->close();
    }
}
?>

这应该可以解决你的问题,你不能直接在 $stmt 上使用 fetch_row() ,那是你的错误。

关于php - 为什么这个 PHP while 查询不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31222366/

相关文章:

php - 如何将 CSS 添加到 CodeIgniter View 中的 foreach 结果?

java - php中的匿名接口(interface)实现

mysql - 在同一列中按条件计数

mysql - C# SQL Linq 获取所有重复项

mysql - ISO 8601 日期进入 MySQL 数据库 - 只是无法让它工作

PHP:使用 count() 获取 1 而不是 0

javascript - 在本地使用 bootstrapValidator 发送静态数据

javascript - 如何在 jQuery 中更改选择时传递 php 数组?

mysql - 就地更新 MySQL 列

php - 将格式为 MM/DD/YYYY 的日期转换为 MySQL 日期