Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $mysqli变量在服务器上工作,但在本地主机上不工作_Php_Mysql_Mysqli - Fatal编程技术网

Php $mysqli变量在服务器上工作,但在本地主机上不工作

Php $mysqli变量在服务器上工作,但在本地主机上不工作,php,mysql,mysqli,Php,Mysql,Mysqli,在我的服务器上,我在每个函数中都包含了'config.php',它工作得很好,但是当我在本地主机上执行相同的操作时,找不到变量$mysqli,php版本会因服务器而异吗?路径都是100%正确的。 误差如下 注意:未定义变量:mysqli in 第20行的C:\Users\PC\Documents\XAMPP\htdocs\php\myfunctions.php config.php $mysqli = new mysqli('localhost', 'userone', 'password',

在我的服务器上,我在每个函数中都包含了'config.php',它工作得很好,但是当我在本地主机上执行相同的操作时,找不到变量$mysqli,php版本会因服务器而异吗?路径都是100%正确的。 误差如下

注意:未定义变量:mysqli in 第20行的C:\Users\PC\Documents\XAMPP\htdocs\php\myfunctions.php

config.php

$mysqli = new mysqli('localhost', 'userone', 'password', 'iitb');
当我使用服务器时,连接明显改变

myfunctions.php

<?php

class News
{
    function getLatest()
    {

        include 'config.php'; // WHERE TO PUT THIS CANNOT FIND MYSQL
        $time = date('Y-m-d G:i:s', strtotime("-1 week"));

        $stmt = $mysqli->prepare("SELECT ForumId, ForumTitle, ForumPostText FROM `forum` WHERE `PostDate` > ? ORDER BY PostDate desc LIMIT 5 ");
        $stmt->bind_param('s', $time);
        $stmt->execute();
        $stmt->bind_result($ForumId, $ForumTitle, $ForumPostText);
        $stmt->store_result();

        if ($stmt->num_rows() == 0) {
            echo "<p>No latest article available</p>";
        } else {
            while ($row = $stmt->fetch()) {
                echo '<p class="posttitle"><a href="post.php?post=' . $ForumId . '">' . $ForumTitle . '</a>    </p>';
                echo '<p class="posttext">' . substr($ForumPostText, 0, 93) . ' ...</p>';
            }
            $stmt->free_result();
        }
    }
    function mostPopular()
    {
        include 'config.php'; // WHERE TO PUT THIS CANNOT FIND MYSQL
        $stmt = $mysqli->prepare("SELECT ForumId, ForumTitle, ForumPostText FROM forum ORDER BY Views DESC  LIMIT  5");
        $stmt->execute();
        $stmt->bind_result($ForumId, $ForumTitle, $ForumPostText);
        $stmt->store_result();

        if ($stmt->num_rows() == 0) {
            echo "<p>No latest article available</p>";
        } else {
            while ($row = $stmt->fetch()) {
                echo '<p class="posttitle"><a href="post.php?post=' . $ForumId . '">' . $ForumTitle . '</a>    </p>';
                echo '<p class="posttext">' . substr($ForumPostText, 0, 93) . ' ...</p>';
            }
            $stmt->free_result();
        }
    }
}

问题在于config.php脚本不是以

<?php

而不是
包含'config.php';//如果在每个函数中都找不到MYSQL,请添加$database参数,例如
函数mostPopular($database){…
,并将
$mysqli->
更改为
$database->

然后,在调用函数时,通过
mostPopular($database)

另一个不相关的注意事项是:你可能会发现让函数返回数组比回显HTML更容易,这样你的函数就可以得到它的数据格式和返回值。(这也意味着你可以不用回显完整的HTML。)

下面是一个使用
mostPopular
函数的示例

功能:

function mostPopular($databaseName){
    $stmt = $mysqli->prepare("SELECT ForumId, ForumTitle, ForumPostText FROM forum ORDER BY Views DESC  LIMIT  5");
    $stmt->execute();
    $stmt->bind_result($ForumId,$ForumTitle,$ForumPostText);
    $stmt->store_result();

    $returnData = array();

    if($stmt->num_rows() > 0){
        $i = 0;
        while($row = $stmt->fetch()){
            $returnData[$i]['ForumId'] = $ForumId;
            $returnData[$i]['ForumTitle'] = $ForumTitle;
            $returnData[$i]['ForumPostText'] = substr($ForumPostText, 0,93) . ' ...';
            ++$i;
        }
            $stmt->free_result();
        }
    }
    return $returnData;
}
使用:


没有最新的文章


在php.ini上启用mysqli扩展…正如Svetlio所说,您可能禁用了mysqli扩展。请使用phpinfo()或在php.ini中进行检查。如果禁用了mysqli,是否会产生“php致命错误:找不到类‘mysqli’”?@MichaelYoo如果关闭错误报告,则不会。@Svenskunganka如果他关闭错误报告,为什么会收到
通知:未定义变量
?他显然只是从文件中删除了这一行。他描述了这一行在他的实时服务器上运行良好,但在本地主机服务器上运行不正常。在这种情况下,可能是短标记。I have添加到了答案中。虽然PHP标记不是问题所在。我确信文件中有PHP标记,因为脚本在他的实时服务器上运行得非常好,但在本地服务器上运行得不好。如果标记是问题所在,脚本在任何PHP服务器上都无法运行。有两个PHP开始标记:

function mostPopular($databaseName){
    $stmt = $mysqli->prepare("SELECT ForumId, ForumTitle, ForumPostText FROM forum ORDER BY Views DESC  LIMIT  5");
    $stmt->execute();
    $stmt->bind_result($ForumId,$ForumTitle,$ForumPostText);
    $stmt->store_result();

    $returnData = array();

    if($stmt->num_rows() > 0){
        $i = 0;
        while($row = $stmt->fetch()){
            $returnData[$i]['ForumId'] = $ForumId;
            $returnData[$i]['ForumTitle'] = $ForumTitle;
            $returnData[$i]['ForumPostText'] = substr($ForumPostText, 0,93) . ' ...';
            ++$i;
        }
            $stmt->free_result();
        }
    }
    return $returnData;
}
<div id="mostPopular">
<?php
    $mostPopular = mostPopular($mysqli);

    if(count($mostPopular) === 0){ 
?>
    <p>No latest article available</p>
<?php 
    } else {
        foreach($mostPopular as $Popular){ 
?>
        <p class="posttitle"><a href="post.php?post=<?php echo $Popular['ForumId'];?>"><?php echo $Popular['ForumTitle'];?></a></p>
        <p class="posttext"><?php echo $Popular['ForumPostText'];?></p>
<?php 
        }
    }
?>
</div>