PHP mysql_query hatası

3 Cevap

Ben öğrenmeye çalışıyorum ve ben şaşırıp. Bu işe yaramazsa neden anlamıyorum. Ben sadece içerir bırakmak ve işlev çağrısını kaldırın ve düzgün çalışan bir işlevi veritabanı bağlantısını şal yoksa.

Ben burada eksik olduğumu nedir?

Hata Mesajı:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home3/badamsne/public_html/views/dogs.php on line 24 Database query failed:

Web sayfası kodu:

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

Ayrı bir dosyada PHP Fonksiyon:

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

Thanks! Tom

3 Cevap

Eğer işlevinden $ bağlantı asla dönmek, ne de üst dosyaya bir değişken olarak onu yakalamak yok.

Bu değiştirin:

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

db_conn();

>

Bunun için:

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

$connection = db_conn();

>

Ve eklemek

return $connection;

işlevinize.

Burada sorun $ bağlantı değişken küresel değil olmasıdır. Hangi sadece fonksiyon db_conn bağlamında "görünür" () ve ana programda demektir.

Senin sorunun üç basit çözümler vardır:

  1. 'Global $ bağlantısı;' Ekle işlevinize ilk komut olarak.
  2. Sen sadece bir bağlantı açtık eğer mysql_query fonksiyonu MySQL bağlantı kaynak sağlamak zorunda değilsiniz. Yani 'mysql_query ("köpekler" SELECT * FROM);' çok çalışmak olacaktır.
  3. Ayrıca işlevi $ bağlantı değişken dönmek olabilir.

$connection db_conn() fonksiyonu için yerel bir değişken olarak oluşturulur gibi görünüyor. Diğer kod erişimi olduğunu, böylece küresel beyan olabilir:

function db_conn()
{
    global $connection;

    $connection = mysql_connect( ... );

}

// now $connection is available everywhere

note: Çoğu programlama dilleri global değişkenleri kötüye ilişkin uyarılar var. Global Variables Considered Harmful WA Wulf ve M. Shaw (ACM SIGPLAN, 1973) bakınız.