aiueo
Lv 5
aiueo asked in 電腦與網際網路程式設計 · 1 decade ago

mysql_fetch_array(): supplied

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test.php on line 28

在網頁上跑出這行字

而且都抓不到資料庫的資料

不知道要怎麼改

我的資料庫名稱是sightseeing

資料表是member

估狗說是sql語法有誤

但是我把sql語法直接在phpmyadmin執行是OK的,資料也對

請幫我看看~"~

<?php

//資料庫設定

$dbServer = "localhost";

$dbName = "sightseeing";

$dbUser = "root";

$dbPass = "123";

//連線資料庫伺服器

if( ! @mysql_connect($dbServer, $dbUser, $dbPass))

die("無法連線伺服器");

//設定連線的文字集與校對為 UTF8 編碼

mysql_query("SET NAME utf8");

//選擇資料庫

if( ! @mysql_select_db($dbName))

die("無法使用資料庫");

$result=mysql_query("SELECT 帳號,姓名,生日 FROM member");

$row=mysql_fetch_array($result);

echo "第一筆記錄的第一個欄位 : $row[0]";

echo "<br />第一筆記錄的帳號欄位". $row['帳號'];

echo "<br />第一筆記錄的第二個欄位 : $row[1]";

echo "<br />第一筆記錄的姓名欄位". $row['姓名'];

echo "<br />第一筆記錄的第三個欄位 : $row[2]";

echo "<br />第一筆記錄的生日欄位". $row['生日'];

$row=mysql_fetch_array($result);

echo "<br /><br />第二筆記錄的第一個欄位 : $row[0]";

echo "<br />第二筆記錄的帳號欄位". $row['帳號'];

?>

在網頁上是

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test.php on line 28

第一筆記錄的第一個欄位 :

第一筆記錄的帳號欄位

第一筆記錄的第二個欄位 : 

第一筆記錄的姓名欄位

第一筆記錄的第三個欄位 : 

第一筆記錄的生日欄位

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test.php on line 36

第二筆記錄的第一個欄位 :

第二筆記錄的帳號欄位

3 Answers

Rating
  • 奇樂
    Lv 4
    1 decade ago
    Favorite Answer

    您好:

    請您試試看名稱都不要打中文的,我以前也曾經這樣過

    Source(s): 自己
  • 1 decade ago

    SELECT 帳號,姓名,生日 FROM member

    將欄位名稱用引號括起來

    變成:

    SELECT `帳號`, `姓名`, `生日` FROM `member`;

    2010-05-20 21:44:44 補充:

    應該是因為SQL與法判定錯誤,只要稍微修改就可以了

    Source(s): 研究PHP的我
  • Yuta
    Lv 7
    1 decade ago

    echo "第一筆記錄的第一個欄位 : $row[0]";

    echo "<br />第一筆記錄的帳號欄位". $row['帳號'];

    echo "<br />第一筆記錄的第二個欄位 : $row[1]";

    echo "<br />第一筆記錄的姓名欄位". $row['姓名'];

    這語法怎麼看起來怪怪的 ...

    譬如你撈出資料 $row 那他應該是一個陣列(array)

    然後有五筆的話,你去 print_r($row)就可以看到它長的樣子

    基本上會是$row[0]["帳號"]=xxxx $row[0]["名字"]=....

    然後再 $row[1]["帳號"]=xxx $row[1]["名字"]...

    是我的話,照你的寫法我會建議 :

    while($row=mysql_fetch_array($row)){

    echo "帳號 = ".$row["帳號"]."<br>";

    echo "名字 = ".$row["名字"]."<br>";

    }

    如果你不是用 while 而是直接照你發問的

    $row = mysql_fetch_array($result); 已經丟出來的話

    那要把資料解出來可以用foreach 或是 while

    譬如

    $n=0;

    while($row[$n]){

    echo "帳號 = ".$row[$n]["帳號"]."<br>";

    echo "名字 = ".$row[$n]["名字"]."<br>";

    $n++;

    }

    Source(s): 自己經驗
Still have questions? Get your answers by asking now.