需要一些启发,这是我在这里的第一篇文章.
我想使用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?
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访问它们.
| 归档时间: |
|
| 查看次数: |
32139 次 |
| 最近记录: |