簡體   English   中英

PHP mysql_query錯誤

[英]PHP mysql_query error

我正在努力學習而且我被卡住了。 我不明白為什么這不起作用。 如果我只是離開include並刪除函數調用並且不將數據庫連接包裝在函數中它可以正常工作。

我在這里失蹤的是什么?

錯誤信息:

警告:mysql_query():提供的參數不是第24行/home3/badamsne/public_html/views/dogs.php中有效的MySQL-Link資源數據庫查詢失敗:

網頁代碼:

    <?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());
       }
}
?>

謝謝! 湯姆

你永遠不會從你的函數返回$ connection,也不會將它作為頂部文件中的變量捕獲。

改變這個:

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

db_conn();

?>

對此:

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

$connection = db_conn();

?>

並添加

return $connection;

你的功能。

你的問題是,$ connection變量不是全局變量。 這意味着它只在函數db_conn()的上下文中“可見”而不是在主程序中。

您的問題有三種簡單的解決方案:

  1. 添加'全球$連接;' 作為你的功能的第一個命令。
  2. 如果剛剛打開一個連接,則不必為mysql_query函數提供MySQL連接資源。 所以'mysql_query(“SELECT * FROM dogs”);' 也會工作。
  3. 您還可以從函數中返回$ connection變量。

看起來$connection是作為db_conn()函數的局部變量創建的。 您可以將其聲明為全局,以便其他代碼可以訪問它:

function db_conn()
{
    global $connection;

    $connection = mysql_connect( ... );

}

// now $connection is available everywhere

注意:大多數編程語言都有關於濫用全局變量的警告。 參見WA Wulf和M. Shaw 認為有害全局變量 (ACM SIGPLAN,1973)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM