使用php代码调用MYSQL CREATE VIEW?

Bay*_*ayu 5 php mysql view

需要一些启发,这是我在这里的第一篇文章.

我想使用php调用并使用我之前创建的mysql视图...是否可能?或者换句话说,我想知道....我们可以或者我们如何调用mysql视图,我们已经使用php创建了?减少长查询编码

标准通用代码如下:

$sql= " SELECT shipping.tarrif1, city.city_name
         FROM shipping JOIN city
   ON shipping.id_city = city.id_city";
$db->QueryArray($sql);   

while ($row = $db->Row()) {
echo $row->city_name. " - " . $row->tarrif1 . "<br />\n"; 
}
Run Code Online (Sandbox Code Playgroud)

现在为MYSQL视图:

$sql= " CREATE VIEW shipsumarry AS SELECT shipping.tarrif1, city.city_name
         FROM shipping JOIN city
   ON shipping.id_city = city.id_city";
Run Code Online (Sandbox Code Playgroud)

纯MYSQL命令:

query: SELECT * FROM shipsummary
Run Code Online (Sandbox Code Playgroud)

在PHP中:

 $sql = i'm badly stuck here...please help
Run Code Online (Sandbox Code Playgroud)

我们如何使用php访问它.

谢谢你

增加1:

好的...让我重写一下这个例子:

$sql1= " CREATE VIEW shipsumarry AS SELECT shipping.tarrif1, city.city_name
         FROM shipping JOIN city
   ON shipping.id_city = city.id_city";
$sql2= "SELECT * FROM shipsummary";
$db->QueryArray($sql2);
Run Code Online (Sandbox Code Playgroud)

$ sql2看不到shipummary VIEW,因为它已经在另一个var中了

如何利用然后执行$ sql1?&$ sql2?

Mic*_*ski 7

PHP中的过程是相同的 - 客户端(PHP)将MySQL视图视为常规表,因此将其查询为

mysql_query("SELECT * FROM shipsummary");

// Or for whatever framework you're using:
$db->QueryArray("SELECT * FROM shipsummary"); 
Run Code Online (Sandbox Code Playgroud)

应该正常工作.如果它无法正常工作,则您访问该视图的MySQL用户可能具有损坏的权限.(虽然看起来不太可能).

UPDATE

在您编辑问题后,我可以非常清楚地看到问题.

$sql1= " CREATE VIEW shipsumarry AS SELECT shipping.tarrif1, city.city_name
         FROM shipping JOIN city
   ON shipping.id_city = city.id_city";
$sql2= "SELECT * FROM shipsummary";

// Here, you need to execute $sql1 before $sql2 is useful.
$db->QueryArray($sql1);
// Now execute $sql2
$db->QueryArray($sql2);
Run Code Online (Sandbox Code Playgroud)

我们不知道您正在使用什么数据库类或框架,但如果有一个类似的方法QueryArray()不返回结果集,但只是执行一个语句,请使用它来创建视图.

现在,所有这一切......

除非每次执行此代码时视图的定义必须更改,并且除非您有理由DROP VIEW shipsummary每次执行此脚本的执行结束,否则它会产生远,远,远,远......更简单的创建数据库中的视图,它将永远保留,而不是继续使用PHP重新创建它.视图一旦创建,就会保持创建状态.

不要将它们视为临时查询时间/代码保护程序.在数据库中创建需要ONCE的视图(使用PHPMyAdmin或mysql CLI,或者创建表),然后使用PHP访问它们.