[英]PHP Mysql trying to pull multiple rows from different tables (works for 3 rows on 2 tables but not 4 rows from 3 tables)
我正在嘗試從數據庫的不同表中提取多行。
如果我只有兩個表的前3行,則可以正常工作。 一旦添加第三張表並嘗試拉另一行,它就會中斷!
最終,我想做的是提取圖像, dayid
,一個人的名字,然后一個原因的名字。
imageURL
和Outfitday_id
在同一表中,人員名稱在Pilot
表中,原因的名稱在表cause中。
出於某種原因,它將從表Outfitimage
拉出前兩行( imageUrl
, outfitDay_id
),然后從Pilot
拉出第三行( name
),但是如果我添加名稱並嘗試從Cause
表中將其拉出,它將失敗。
$link = mysql_connect("host","user","pass");
if ($link) {
mysql_selectdb("up",$link);
// Select records from the DB
$query = "SELECT imageUrl,outfitDay_id,name,name FROM OutfitImage,Pilot,Cause ORDER BY Rand(" . date("Ymd") . ") LIMIT 1";
$image = mysql_query($query);
// Display records from the table
echo "";
while ($row = mysql_fetch_array($image, MYSQL_NUM)) {
echo "<IMAGE SOURCE='$row[0]'/><br>";
echo "<div id='info'>Day $row[1] of ";
echo "$row[2] Uniform Project for$row[3] </div>";
}
echo "";
} else {
echo "Can't connect to the database!";
}
這可能是因為name
列不明確。 我猜您在Cause
和Pilot
(或其他一些表)中都有一個name
列。 MySQL無法猜測您要從哪個表中檢索列值,並且會吐出一個錯誤( 字段列表中的列名不明確 )。
確保使用表名在列名前添加前綴以消除歧義:
SELECT
imageUrl, outfitDay_id, Cause.name, Pilot.name
FROM
OutfitImage, Pilot, Cause
您正在嘗試對所有三個表進行交叉聯接,但沒有創建任何條件將它們過濾掉。 子句FROM table1,table2,table3嘗試對所有三個表進行交叉聯接。 交叉聯接是指將一個表中的每一行與另一表中的每一行配對。 例如,假設我有三個表,每個表都有兩行。 我將第一個表命名為jack和jill兩行,第二個表將命名為21行和24行年齡,第三個表是性別,並包含男性和女性行。 如果我從名字,年齡,性別做一個子句,它將返回一個2 X 2 X 2 = 8行的表。
names ages genders
jack 21 male
jack 21 female
jack 24 male
jack 24 female
jill 21 male
jill 21 female
jill 24 male
jill 24 female
通常,當您交叉聯接時,您還向WHERE添加條件以過濾掉沒有意義的行。 例如,在示例FROM子句中,您可能具有WHERE sex.id = names.genders_id。 在這種情況下,您正在將名稱鏈接到性別表中的特定性別行。 這也可能會解決您對LIMIT 1的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.