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