點進來的大神您好!
這是我的HTML
<.form method="POST" action="search_data.php">
...
<.input type="text" id="search-bar" name="user_input">
...
<.input type="submit" value="submit">
...
<./form>
以下是我的search_data.php
<.?php
$conn=new mysqli("localhost","root","willy10019","mystore");
if($conn->connect_error){
die("連線失敗".$conn->connect_error);
}else{
echo("Connect Sucess! ");
}
//備註:上面有連線成功 顯示Connect Sucess!
$user_input=$_POST["user_input"];
$sql = "SELECT user_order.*,
product.Product_name AS Product_name,
customer.Customer_name AS Customer_name,
customer.Customer_account AS Customer_account
FROM (user_order
JOIN customer
ON user_order.Customer_id=customer.Customer_id)
JOIN product ON user_order.Product_id=product.Product_id
WHERE customer.Customer_name='%$user_input%' or
customer.Customer_account='%$user_input%'
";
$result=$conn->query($sql);
$row=$result->fetch_assoc();
if($result->num_rows>0){
while($row)
echo "我找到東西了 買家是 ".$row["Customer_name"]." ";
}else{}
----------------我是結束的分隔線----------------
這是我的資料庫 ▼
資料庫mystore中有3個資料表 分別是user_order,customer,product
user_order的欄位有:Order_id、Customer_id、Product_id、amount、Order_date、Order_status
customer的欄位有:Customer_id、Customer_name、Customer_account、Customer_password、Customer_address
product的欄位有:Product_id、Product_name、Product_price
--------------我是充滿疑惑的分隔線--------------
想請教我的$row一直都抓不到東西
是不是SQL哪裡錯了呢
整天耗在這個問題上沒有進展ˊˋ
你...找錯問題點了。問題不在你的sql語法。而是你的程式碼。
我不想講明,自已去查一下。
提示:
while($row) ????
$row=$result->fetch_assoc();???
我會跟你說這兩個點一定有問題,自已再去研究。
您是說無限迴圈的問題嗎?
不過目前是$row連東西都沒有
小弟連跑無限迴圈的機會都沒有啊XD
Php office website example
這裡有範例供你參考(套用)
您是說無限迴圈的問題嗎?
不過目前是$row連東西都沒有
小弟連跑無限迴圈的機會都沒有啊XD
看樣子你的基礎一定很差。
居然第一眼就覺得是無限回圈。
不過你倒是沒說錯。連無限回圈也不會跑也沒錯。
先去看一下while的用法。
再看看 mysqli_fetch_assoc 的對應while的用法。
上面有人,提供官方的用法。
去看一下學一下。
要不然這麼明顯的錯誤不該沒注意到。
另外,可以的話。最好改學pdo的方式吧。
剛好你不是學用函式用法而是物件用法。
改成pdo的用法不會很難。
我是打算先寫好這個 再去弄另一個PDO的 兩個都學學
只是剛到這邊就卡住了
另外我看了一下其他幾位大大貼的連結 還有網路上的範例
while()大多都是包$result->fetch_assoc()
只是我把$row拿出來先定義了
所以我不太明白您說的點在哪裡0.0
前輩好,不好意思打擾了
WHERE customer.Customer_name='%$user_input%' or
customer.Customer_account='%$user_input%'
沒用過這樣的用法
請問='%$user_input%'
的用意是??
其實mysqli是可以不需要學了。
直接學pdo就行了。
反正php7也不直接套入了。
這邊我用白話點的說法教你好了。
$result->fetch_assoc();
先問問你,你覺得上面這個指令是拿到什麼資料呢??
資料串還是??
其實這是拿到一筆資料。
這個指令做的事是將你目前的資料集,當前的指標記錄資料取出後,並跳下一筆。
而一般如下的寫法
while($row = $result->fetch_assoc()){
$data[] = $row;
}
就是利用while的特性,加上 fetch_assoc 會自動下一筆的特性。
來達到連續取出資料。直到沒資料就停止。
說到這是否明白。
先聲明。這是基本一定要知道的東西。不要搞不清楚情況。
在不懂你使用函式的作用之前。不要隨便以為自已認為的東西。
要從最根本的方向找。不要用猜的。
學程式很忌所謂「用猜」問題。會搞死你自已。
他不知道去哪抄的。單單依sql語法而言。是不可能用這樣的寫法。
一般這可能是一種字串取代法的方式。用程式去對應正確的參數後再生成正確的sql碼。可能他沒貼完全。所以你並沒看到後續的字串處理。
pdo有自已的字串對應方式了。可以不需要用到這招。
等於改成LIKE 後面有解決了 感謝archer9080
我是在猜
他是不是單純 LIKE
寫成 =
?
-----------更新-----------------
打字想太久又被搶先了@@
看起來是想依照輸入的值去找相似的
終於GET到大大的點了
while($row = $result->fetch_assoc()){
...
}
關於這段我知道$result->fetch_assoc()只會取一筆資料
只是因為SQL那邊一直卡住 加上菜鳥看到迴圈裡面條件一長串會有種煩躁感
所以我把它拿出來定義了
(實際上結果也應該只有一筆資料 所以我才直接把他丟出來)
archer9080
對 菜鳥SQL不熟練www
一個87問題卡一天找不到錯XDD
(留言好像沒辦法給你點最佳解答)
您有買php+sql的書來練習嗎?
我建議初學者還是買本書,按書上的範例一一試做會比較有完整的概念,
網路上東抄西貼過於片面,適合老手,不適合新手。
把這段裡的範例程式碼看懂(沒幾列,跟你寫的數量差不多)
然後拿去改成你要的