【问题标题】:PHP finds database, but can'´t seem to find tablesPHP 找到数据库,但似乎找不到表
【发布时间】:2013-05-06 03:46:38
【问题描述】:

我有一个完美运行的小型数据库,有一个完全命名为“Category”的表,而它又有一个完全命名为“Name”的行。我已经尝试了名称的每个版本(大写和非大写),但我的函数没有返回我希望它返回的内容。有人发现明显的错误吗?数据库连接得很好......或者我正在寻找一些严重麻烦的数据库冲突。

这是我的functions.php,我已将其包含在index.php 中,并在正文中进行了函数调用。 "<?php display_menus(); ?>

<?php 

//Connect to database

$link = mysqli_connect('localhost', 'root', 'root');
if (!$link)
{
    $output = 'Unable to connect to the database server.';
    echo $output;
    exit();
}

if (!mysqli_set_charset($link, 'utf8'))
{
    $output = 'Unable to set database connection encoding.';
    echo $output;
    exit();
}

if (!mysqli_select_db($link, 'Asperod6'))
{
    $output = 'Unable to locate the "Asperod6" database.';
    echo $output;
    exit();
}

    $output = 'Database connection established.';
    echo $output;

//Funktion som skriver ut meny


function display_menus()
{
    $result = mysqli_query($link, "SELECT * FROM Category");

    if (!$result)
        {
            $error = 'Error fetching Kategorier: ' . mysqli_error($link);
            echo ("There is none");
        }



        if (mysqli_num_rows($result) > 0) 
        {
            echo "<ul>";

            while ($row = mysqli_fetch_array($result)) 
            {
                echo "<li>" . $row['Name'] . "</li>";
            }

            echo "</ul>";

            mysqli_free_result($result);

        }

} 





mysqli_close($link);


?>

【问题讨论】:

  • 尝试在表名SELECT * FROM DBNAME.Category之前添加数据库名 - 并向我们展示数据库连接函数和数据库模式
  • $link 中有什么?并按照@Dagon 的建议去做
  • ...如果 $link 在函数外部定义,则需要将其设为全局或解析
  • $link 在全局范围内吗?
  • 哎呀,我不知道在哪里发布更多代码

标签: php mysqli identify


【解决方案1】:

由于某种原因,您没有向自己显示实际的错误消息,也没有打开 php 错误报告。而如果你让 PHP 告诉你错误,你会被告知 $link 是未定义的。

  1. 显示实际错误

    $result = mysqli_query($link, "SELECT * FROM Category"); 
    if (!$result) {
       trigger_error(mysqli_error($link));
    } 
    
  2. 让 PHP 报告错误

    ini_set('display_errors',1);
    error_reporting(E_ALL);
    
  3. 最后,在向您报告所有错误之后,使 $link 成为全局 inside 函数

    function display_menus()
    {
        global $link;
        ...
    

【讨论】:

  • 这实际上是一个非常好的建议......谢谢!
【解决方案2】:

尝试将 die() 语句与您的连接语句一起放置并获取实际错误。你如何确定它正在连接到数据库?

更新-

现在看更新,问题可能是那个变量的范围。

添加

global $link 

在你的函数中。在 mysqli_query() 语句中添加 die() 语句将为您提供确切的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多