2015-04-17 65 views
1

我想填充三個PHP值,它將在數據庫中搜索特定表(table_2),該數據庫中的名稱與其中一個從同一個數據庫中的單獨表格(table_1)中刪除列(我已將其分配給php值$cscomp)。正在搜索特定的SQL表,然後搜索此結果中的行

然後,我需要根據與列值中的日期匹配的當前日期,調用它所找到的選定表中的特定行的所有信息。

我已經從值填充在table_1在前面的SQL搜索的正常工作下面的PHP領域:$cscomp, $csship

我想的PHP是以下:

1 <?php 
2 $a = ""; 
3 $b = ""; 
4 $c = ""; 
5 $sql = "SELECT table_name FROM information_schema.tables WHERE table_name='$cscomp'"; 
6 $ship_select = mysqli_query($db_conx, $sql); 
7 $date_select = "SELECT * FROM $ship_select WHERE shipdate = CURRDATE() AND csship='$csship' LIMIT=1"; 
8 while ($row = mysqli_fetch_array($date_select, MYSQLI_ASSOC)) { 
9 $a = $row["port"]; 
10 $b = $row["arrtime"]; 
11 $c = $row["deptime"]; 
12 } 
13 ?> 

我得到的錯誤返回是:

Catchable fatal error: Object of class mysqli_result could not be converted to string.

這與上述第7行有關。我認爲這是找到正確的表,但是沒有得到我需要的行值。有什麼建議麼?

+1

您需要參數化您的查詢。這看起來像是一個sql注入漏洞的教科書示例。 –

+0

你使用mysql和sql-server嗎? – ughai

+0

第6行$ ship_select是一個mysql_result值,它是查詢的狀態 - 不是您認爲它的數據項。您需要執行一次獲取來獲取數據行,就像您在第二個查詢中那樣。 – bitfiddler

回答

0

其實引發錯誤,因爲你,你在第8行做不讀取查詢的價值在6行反正你試圖做的只是:

$date_select = "SELECT * 
    FROM $cscomp 
    WHERE shipdate = CURRDATE() 
    AND csship='$csship' 
    LIMIT=1"; 

我沒有看到第一個查詢的含義是什麼?你要求mysql給你表名,要求根據表名過濾數據庫。

+0

謝謝,你是對的,我是複製請求,並使其過於複雜,當我不需要。再次感謝! – plcrew