【问题标题】:mysql query on WordNet database was working fine and just stop workingWordNet 数据库上的 mysql 查询工作正常,只是停止工作
【发布时间】:2017-04-04 02:44:16
【问题描述】:

此查询由wordnet 本身提供,用于从名为 dict 的视图中检索单词信息,例如定义、示例等。它工作了一个月,但现在它刚刚停止工作。 此外,此查询在 phpMyadmin 中运行良好!

if ($stmt = $link->prepare("SELECT lemma,pos,sensenum,synsetid,definition ,sampleset FROM dict WHERE lemma = ? ORDER BY pos,sensenum"))
{
    $stmt->bind_param("s",$Vocab);
    $stmt->execute();
    $stmt->bind_result($Lemma, $Pos, $Sensenum, $synsetid, $Def1, $Def2);
    while($stmt->fetch()) 
    {
        $output[]=array("Pos"=>$Pos,"Sensenum"=>$Sensenum,"Def1"=>$Def1,"Def2"=>$Def2, "pDef"=>'');
    }
    echo "@@*@@"; 
    print json_encode($output);
    $stmt->close();
}

【问题讨论】:

  • 有什么错误吗?它是否打印echo 的内容?是否有可能因为 where clause 不匹配而只返回零行?打印$stmt->execute() 的返回。尝试使用var_dump($output) 转储$output 数组。
  • $stmt->execute() 是否返回 TRUE? var_dump($output) 打印了什么?你可以把它放在while循环之后。
  • 结果是@@*@@NULL 同样的查询在 phpMyAdmin 结果很多行!
  • var_dump($output) 打印 NULL
  • 此查询由 AJAX 支持给客户端,我正在提醒结果,查询没有结果,没有错误没有结果!太奇怪了!

标签: php mysql prepared-statement wordnet


【解决方案1】:

检查每个方法/函数调用的返回值,并在相关位置打印mysqli_connect_errno()mysqli_connect_error()mysqli_stmt_errno($stmt) 以检查错误。

数据库名称可能已在配置中更改。用户/密码可能已更改(如果您认为它们是正确的,请运行类似 select now() as c1 的虚拟查询,看看是否可行。

如果虚拟查询有效,请运行原始查询,但要删除 where 子句,并使用 limit 10 子句限制行。

而且,如果您想通了,请在此处添加该信息以供将来的读者阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多