PHP mysql\u查询错误

PHP mysql\u查询错误,php,Php,我在努力学习,但我被卡住了。我不明白为什么这样不行。如果我只保留include并删除函数调用,而不将数据库连接包装到函数中,它将正常工作 我在这里错过了什么 错误消息: 警告:mysql_查询:提供的参数不是第24行/home3/badamsne/public_html/views/dogs.php中的有效mysql链接资源 数据库查询失败: 网页代码: <?php include("../model/db_conn.php"); db_conn(); ?>

我在努力学习,但我被卡住了。我不明白为什么这样不行。如果我只保留include并删除函数调用,而不将数据库连接包装到函数中,它将正常工作

我在这里错过了什么

错误消息:

警告:mysql_查询:提供的参数不是第24行/home3/badamsne/public_html/views/dogs.php中的有效mysql链接资源 数据库查询失败:

网页代码:

    <?php
    include("../model/db_conn.php");

    db_conn();
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>
  <?php



    // 3. Perform database query
    $result = mysql_query("SELECT * FROM dogs", $connection);
    if(!$result) {
        die("Database query failed: " . mysql_error());
        }

     // 4. Use returned data
           while ($row = mysql_fetch_array($result)) {
                echo $row[0]." ".$row[1]."<br />";
           }
  ?>
</body>
</html>
<?php
// 5. Close connection
   mysql_close($connection);
?>
单独文件中的PHP函数:

<?php

function db_conn() {

    // 1. Create database connection
    $connection = mysql_connect("localhost","website_admin","p@ssw0rd");
    if(!$connection) {
        die("Database connection failed: " . mysql_error());
        }

    // 2. Select a database to use
    $db_select = mysql_select_db("website_db", $connection);
    if(!$db_select) {
        die("Database selection failed: " . mysql_error());
       }
}
?>
谢谢!
Tom

您永远不会从函数返回$connection,也不会将其作为变量捕获到顶部文件中

更改此项:

<?php
include("../model/db_conn.php");

db_conn();

到您的函数。

您永远不会从函数返回$connection,也不会将其作为变量捕获到顶部文件中

更改此项:

<?php
include("../model/db_conn.php");

db_conn();

您的问题是,$connection变量不是全局变量。这意味着它只在函数db_conn的上下文中可见,而不在主程序中可见

您的问题有三种简单的解决方案:

添加“全局$connection;”作为函数的第一个命令。 如果只打开了一个连接,则不必向MySQL\u查询函数提供MySQL连接资源。所以“mysql_查询从狗中选择*”这也行。 您还可以从函数中返回$connection变量。
这里的问题是,$connection变量不是全局变量。这意味着它只在函数db_conn的上下文中可见,而不在主程序中可见

您的问题有三种简单的解决方案:

添加“全局$connection;”作为函数的第一个命令。 如果只打开了一个连接,则不必向MySQL\u查询函数提供MySQL连接资源。所以“mysql_查询从狗中选择*”这也行。 您还可以从函数中返回$connection变量。 看起来$connection是作为db_conn函数的局部变量创建的。您可以将其声明为全局,以便其他代码可以访问它:

function db_conn()
{
    global $connection;

    $connection = mysql_connect( ... );

}

// now $connection is available everywhere
注意:大多数编程语言都有关于误用全局变量的警告。请参见W.A.Wulf和M.Shaw ACM SIGPLAN,1973。

看起来$connection是作为db_conn函数的局部变量创建的。您可以将其声明为全局,以便其他代码可以访问它:

function db_conn()
{
    global $connection;

    $connection = mysql_connect( ... );

}

// now $connection is available everywhere

注意:大多数编程语言都有关于误用全局变量的警告。请参见W.A.Wulf和M.Shaw ACM SIGPLAN,1973。

我不知道如何操作,但您的$connection变量有一个问题。PHP始终保持一个全局连接对象;也许您可以从mysql_查询调用中删除该变量,因为它是不必要的$结果=mysql_querySELECT*来自狗$连接没有问题,只是不在同一范围内;我重复一遍,不要使用mysql_*接口。切换到mysqli或PDO。它已被弃用,并在最新的PHP版本中消失。我不知道如何使用,但您的$connection变量有一个问题。PHP始终保持一个全局连接对象;也许您可以从mysql_查询调用中删除该变量,因为它是不必要的$结果=mysql_querySELECT*来自狗$连接没有问题,只是不在同一范围内;我重复一遍,不要使用mysql_*接口。切换到mysqli或PDO。在最新的PHP版本中,它已经被弃用并消失了