2015-04-17 66 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