請MySQL高手幫我看看下列語法有何問題??

下面是我po上的一個簡單的查詢資料庫資料的語法

<h2>顧客資料查詢</h2>

<form method="post" name="form1" action="1-1-1.php">

姓名:<input type="text" name="uname">

<input type="submit" value="查詢">

<input type="reset" value="重設">

</form><p>

結果顯示

<hr>

<?php

$host="localhost";

$user="linda";

$pass="566";

$database="book";

$table="buyer";

$customer=$_POST["uname"];

if($customer)

{

$link=mysql_connect($host,$user,$pass);

if($link != False)

{

$db=mysql_select_db($database,$link);

$qstring="select * from buyer where name='$customer'";

$result=mysql_query($qstring,$link);

$arrdata=mysql_fetch_row($result);

if($arrdata != Null)

{

echo"姓名:".$arrdata[1]."<br>";

echo"電話:".$arrdata[2]."<br>";

echo"E-mail:".$arrdata[3]."<br>";

echo"已購買的書:".$arrdata[5]."<br>";

}

else

{

echo"<font color='red'>沒有".$customer."顧客購買的資料!</font>";

}

}

else

{

echo"無法連線到MySQL!";

}

}

else

{

echo"請輸入顧客資料!";

}

?>

在原本畫面的文字格都很正常的顯示出來沒關題

但每當我打入人名要去尋找該人員的資料時

就都會顯示下列訊息

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\practice\1-1-1.php on line 39

沒有林錦雀顧客購買的資料!

小弟才淺看了很久都看不出問題在哪

煩請各位大大幫忙看看問題在哪??

MySQL資料庫裡的資料我有再三確認過

不管是mysql>底下或是phpmyadmin我都檢查過

人名方面是沒問題的

我在mysql>模式下用select * 去查找名字都是正碓的

試了好幾個名字都是一樣的結果

試資料庫外的名字就沒那串錯誤指令(會直接顯示沒有該顧客購買資料)

Update:

落葉兄的意見我試過

一樣是不行

因為是php程式

我用 .$customer. 跟 +$customer+ 都試過

也試過在後面加分號 where name='customer';";

也都是不行

5 Answers

Rating
  • 1 decade ago
    Favorite Answer

    如果你的mysql版本是4.1以上的話!請在mysql_connect之後

    下個mysql_query('set names utf8');

    指定一下字碼

    應該就查得到了

    2010-06-30 20:05:12 補充:

    如果你的mysql版本是4.1以上的話!請在mysql_connect之後

    下個mysql_query('set names utf8');

    指定一下字碼

    應該就查得到了

    ^^來拿個分數

  • 1 decade ago

    有兩個建議:

    第一個建議

    $result=mysql_query($qstring,$link);

    這一行請改為

    $result=mysql_query($qstring,$link) or die(mysql_error( ));

    當mysql_query執行異常時就會顯示錯誤訊息,可避免猜測

    我推測應該是PHP內SQL語法問題,造成沒有取得資料,

    所以mysql_fetch_row ( )產生錯誤..

    第二個建議:

    假設mysql_query()語法沒有問題,我發現到你的mysql_fetch_row( )

    裡面是乎多了一個「,」,請把這個逗點去除。

    Source(s): PHP 6 與MySQL基礎學習教室第十六章
  • 1 decade ago

    狐狸兄的意見我試了也是沒效果

    兩個buyer我都試了

    它錯誤都是說mysql_fetch_row()那行錯誤

    我是用dw編緝的

    若拚錯它文字會不跳顏色

    所以確定不是拚錯的問題

    而我試另一個查詢筆資料的時候也有同樣的問題

    原本都 IE 看起來都正常

    送出查詢後也是出現鏌誤

    而且都找不到資料庫裡該員的記錄

    那個程式都是顯示mysql_num_rows這行指令錯誤

    2010-06-29 10:17:29 補充:

    我後來試了試

    發現問題應該該不是出在程式碼的問題

    而是MySQL資料表中文字的問題

    我後來在資料庫裡另外加一筆全都英文名字住址的記錄

    再回IE查詢該英文人名就沒問題

    我在dos下用select 指令找出來的資料顯示中文都正常

    好像是在IE下卻顯示不出資料庫裡的中文

    我也試過重新建立表格

    用character set......的指令去建立

    utf8跟big5我都建過

    但也都一樣結果

    2010-06-30 09:36:14 補充:

    感謝大家的幫忙

    問題已獲得解決

    確實是加了mysql_query("set names'utf8'")這行就行了

    話說怎麼提供意見的不能贈點嗎??

    我現在能贈點的只有第回答001的那位能給

    其他的不能給嗎??

    還是要等時間到??

  • Sam
    Lv 5
    1 decade ago

    抱歉,我有一陣子沒寫php了,忘記 php 要用.來連接了 @@

    不過理論上你的 sql 指令用.串起來之後,應該是沒錯才對呀!

    2010-06-28 19:28:26 補充:

    而且看錯誤訊息,是說這個錯誤-->mysql_fetch_row() -__-

  • How do you think about the answers? You can sign in to vote the answer.
  • Sam
    Lv 6
    1 decade ago

    buyer改成`buyer`呢?

    「`」是ESC下面那顆!不是單引號喔!

    2010-06-29 11:47:34 補充:

    或許問題就如同「說走就走」說的。

    你php對資料庫的取出資料編碼不符。

    另外就是你看的那本書這種範例還真是糟榚啊!

    不曉得是那一本?

    回答1是他寫的那本書的作者。

    他一直在打他的書的廣告。

    我實在想不透初學者用書已經多到滿天飛了。

    這時候出來一本「並沒有比其他的書特別」還「少掉物件導向」的書。

    是會比較帥氣嗎?

    2010-06-29 11:52:54 補充:

    回答1只是為了推銷他的書才回答你。

    並非真的有心要解決你的問題。

    如果只有像這種別有目的的回答。

    而沒有其他的回答,但你的問題獲得解決的話。

    不如刪了你的回答。

    如果有其他人回答的很好,就該當給他最佳解答。

    2010-06-30 12:02:43 補充:

    寫信給「說走就走」

    請他回答吧!

    他先提出的。

Still have questions? Get your answers by asking now.