<?php
header('Content-Type: text/html; charset=utf-8');
@require 'config.inc.php';
//===============建立course資料表====================
$sql="SELECT a.courseID, a.coursename ,a.required,r.name,r.id ,r.required from allmatch a,required r where a.required = r.name group by a.courseID";
$result = mysqli_query($link_ID, $sql); //送出查詢
$course_index = mysqli_num_rows($result); //取得資料筆數
for ($index=0; $index < $course_index; $index++){
$coursearr[$index] = mysqli_fetch_array($result); //將資料存進陣列
}
for ($index=0; $index < $course_index; $index++){
$id=$coursearr[$index]['a.courseID'];
$name=$coursearr[$index]['a.coursename'];
$rid=$coursearr[$index]['r.id'];
$sql="INSERT INTO `course`(`id`, `name`, `rid`) VALUES ('".$id."', '".$name."', '".$rid."')";
echo $sql.'<br/>';
if (!mysqli_query($link_ID, $sql)) {
echo 'Error: ' . mysqli_error();
}
}
?>
如圖 抱歉是初學者..
資料應該可以寫進course..
但是還是顯示錯誤
連線成功
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\lhuregistrationX1\course.php on line 7
所以想請有沒有大大修正一下!!
或是我的想法錯誤了!!抱歉...麻煩糾正指教一下!!
目前是前兩欄都可以..只是要加一欄requiredID就近不去了
由第一圖的requird去判別第二圖的name
然後資料送回去該列的requiredID
再送給迴圈寫進去第三張圖..
這邊卡住了
所以現在小人不知道是判別出問題 還是寫進去出問題(因為裡面有個null空值)
SELECT a.courseID, a.coursename ,a.required,r.name,r.id ,r.required
from allmatch a,required r
where a.required = r.name
group by a.courseID
1.放到 phpMyAdmin 執行看看。
2.group by 目的是什麼?
不是視為群組嗎....
1.放到 phpMyAdmin 執行結果是什麼 ?
2.請參閱 : GROUP BY 敘述句 (SQL GROUP BY Statement)
不確定你的需求是什麼,或許你可以改成
SELECT distinct a.courseID, a.coursename ,a.required,r.name,r.id ,r.required
from allmatch a,required r
where a.required = r.name
一樣不能耶...
根據文獻
Returns false on failure. For successful queries which produce a result set, such as SELECT, SHOW, DESCRIBE or EXPLAIN, mysqli_query() will return a mysqli_result object. For other successful queries, mysqli_query() will return true.
若執行失敗會回傳 false
, SELECT
成功會回傳mysqli_result
物件。
你的錯誤訊息說 $result
是一個布林值,代表 mysqli_query
並沒有執行成功(因此回傳 false),所以你應該看一下 SELECT
哪裡錯了。
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\lhuregistrationX1\course.php on line 7
因此先判斷是否成功,再繼續做接下來的事情
if(! $result){
//這裡做執行成功後的事情
}
另外不建議使用字串相接來合成 SQL 語句,當然你也表明你是初學,所以我猜你應該不會知道 SQL 注入的嚴重性,但有時間一定要了解一下,並知道如何避免。可以參考 [Tool] 滲透利器 - SQL Injection 合成語句即時顯示器
說真的,你的問題只是單純的資料庫連結失敗。這當然無論下任何SQL語法都會發生錯誤。
問題點你抓錯了。並不是SQL語法的問題。
正常因該還要有類似
$link_ID=mysqli_connect("localhost","root","123456","DB");
這樣的東西存在才對。不過並沒看到的話,我只能猜測你寫在config.inc下。
你得先確定 mysqli_connect 是否成功,再來討論SQL語法的問題。
<?php
//System setting area
//Database connection
$cfg_db_location = "127.0.0.1"; //Database location
$cfg_db_user = "test"; //Database username
$cfg_db_password = "----------"; //Database password
$cfg_db_database = "----------"; //Database name
//Site setting
$cfg_title = "ZZZ; //Project Chinese title
$cfg_title_en = "ZZZ"; //Project English title
//System default setting
//Default web title
$project_title = $cfg_title. " " .$cfg_title_en;
//Database connection condition
$link_ID = new mysqli($cfg_db_location, $cfg_db_user, $cfg_db_password, $cfg_db_database);
//System default execution
$link_ID->query("SET NAMES 'utf8'");
if ($link_ID->connect_error) {
die("連線失敗: " . $link_ID->connect_error);
}
echo "連線成功";
?>
給大大看一下...
上圖是config.inc 只是我沒PO出來而已..
帳號密碼等等設定都正確..
同時連此檔案目前是可以的
但是只有相同ID跟name過得去
目前是前兩欄都可以..只是要加一欄requiredID就近不去了
由第一圖的requird去判別第二圖的name
然後資料送回去該列的requiredID
再送給迴圈寫進去第三張圖..
這邊卡住了
所以現在小人不知道是判別出問題 還是寫進去出問題(因為裡面有個null空值)
$cfg_title = "ZZZ; 是不是少打一個",這樣會出錯吧
喔 那是我PO上來再改的 因為有一些文字不好露白才打XXX
只是那時候手物...
原本檔案室有的
唉~~你初學也程度低也就算了。連發個問題也不好好發。
先指點你幾個問題
1.你的DB物件是採用 物件模式的,其後就盡量使用物件導向的方式來處理你的語法。雖然用函式也沒差也沒錯。
2.不要用FOR來跑SQL,這很危險的。
3.好好的看你的錯誤訊息,學會如何輸出錯誤。
4.好好的打好你要發問的程式碼。不要讓其它大大們,找到不該找的BUG
最後在指點你一下,目前我看起來我推測是重覆KEY的問題。
只是你沒注意看錯誤訊息。又講的「不搭不七」的。
我只好通靈來檢查你的可能問題了。
你的 course 中的ID可能是唯一值。
所以並不允許你有重覆的KEY值。
所以第一次可以正常。第二次ID有衝突重覆了。當然給你報錯了。
好的 謝謝指教..
以後會注意發文詢問各位大大的..
SELECT (@SN:=@SN+1) as id,if(required LIKE "%必%","1","2")as required,required as name FROM (SELECT required FROM allmatch GROUP BY required ORDER BY required DESC LIMIT 20) as Dummy1, (SELECT @SN:=0) as Dummy2
慢慢一張一張搞定!!
終於早上各位的建言 跟看其他教學...
學會
去分析總表並新增欄位 且數字1或2
然後依照select的資訊給編碼..
依照名稱給於名稱
已經會撈資料了 下午要開始來學怎麼寫進資料庫內了!!
不錯,不過再指點你一下。
如果可以,反正你是初學。最好還是學用PDO的方式。