mysqli_query函数不能正常工作?

时间:2014-08-16 22:58:58

标签: php mysqli

有一个表'hit_count'在数据库中只包含一个列'count',我试图按用户计算命中数。问题是如果阻塞并且它直接执行else块,则控件不会进入。我从php.net多次检查语法,我认为这是正确的。仍然没有执行if block。请帮忙!

<?php
require 'connect.inc.php';    //connection file

function update_count()
{
    //$link = mysqli_connect($mysqli_host,$mysqli_username,$mysqli_password);
    global $link;
    $query = "SELECT 'count' FROM 'hit_count'";
    if($query_run = mysqli_query($link,$query))
    {       
        echo 'checking control';
        $count = mysql_result($query_run,0,'count');
        echo $count;            
    }
    else
    {
        echo 'Problem Occured!!';
    }
}
update_count();
?>

2 个答案:

答案 0 :(得分:0)

问题是连接后没有选择数据库。您需要运行查询以连接到数据库,或者向mysqli_connect()函数添加第四个参数,并使用要连接的数据库的名称。

我建议您在脚本开头连接到数据库(并忘记全局),因为每次需要运行update_count()时都不需要连接数据库。

此外,许多MySQL服务器只允许有限数量的同时连接,并且由于您在完成后没有关闭连接,因此将连接保持打开状态。

所以你的新代码应该是:

<?php
require 'connect.inc.php';    //connection file
$link = mysqli_connect($mysqli_host,$mysqli_username,$mysqli_password,$mysqli_database);
function update_count()
{

    $query = "SELECT 'count' FROM 'hit_count'";
    if($query_run = mysqli_query($link,$query))
    {       
        echo 'checking control';
        $count = mysql_result($query_run,0,'count');
        echo $count;            
    }
    else
    {
        echo 'Problem Occured!!';
    }
}
update_count();

mysqli_close($link);
?>

答案 1 :(得分:0)

您的代码存在一些问题。

您使用的是不正确的table and column indentifiers

$query = "SELECT 'count' FROM 'hit_count'";
                 ^     ^      ^         ^

应该读作

$query = "SELECT `count` FROM `hit_count`";

小心count列并将其包装在反引号中,因为它是aggregate function

(参见 脚注 关于此事)


  • 您还将MySQL API与mysqli_query()mysql_result混合使用 - 那些不同的(MySQL)函数混合。使用mysqli_result

在打开<?php标记后立即将error reporting添加到文件顶部。

error_reporting(E_ALL);
ini_set('display_errors', 1);

以及or die(mysqli_error($con))mysqli_query(),它会发出任何错误信号。


  

&#34;我已经多次从php.net检查语法,我认为这是正确的。&#34;

从该页面开始:

  

警告

     

自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:

mysqli_query()
PDO::query()

它没有声明可以混合使用这两个MySQL API;你误解了它。


脚注:(使用count

来自MySQL手册:

  

&#34;允许内置函数的名称作为标识符,但可能需要谨慎使用。例如,COUNT可作为列名称。但是,默认情况下,在函数名称和后面的“(”字符之间的函数调用中不允许使用空格。此要求使解析器能够区分名称是在函数调用中还是在非函数上下文中使用。&#34; < / em>的


修改

试试这个:

if($query_run = mysqli_query($link, $query)) {
    // This gets you one row at a time, use a while if there are multiple rows
    // while($row = mysqli_fetch_assoc($query_run)){}
    $row = mysqli_fetch_assoc($query_run);
    $count = $row['count'];
    // Do whatever with $count

    echo $count;  

}