Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework 在使用Zend_Db的sql查询中的何处_Zend Framework_Zend Db - Fatal编程技术网

Zend framework 在使用Zend_Db的sql查询中的何处

Zend framework 在使用Zend_Db的sql查询中的何处,zend-framework,zend-db,Zend Framework,Zend Db,Zend框架初学者。我正在尝试获取视频游戏数据库中的所有Xbox标题。一张桌子里有游戏。另一个表包含游戏类型(即Xbox、Xbox Live Arcade等)。我通常使用以下查询来获取Xbox标题 如何使用Zend_Db执行相同的查询? 谢谢 SELECT titleGame FROM Game WHERE idGameType IN ( SELECT idGameType FROM GameType WHERE nameGameType = 'Xbox') 这可

Zend框架初学者。我正在尝试获取视频游戏数据库中的所有Xbox标题。一张桌子里有游戏。另一个表包含游戏类型(即Xbox、Xbox Live Arcade等)。我通常使用以下查询来获取Xbox标题

如何使用Zend_Db执行相同的查询?

谢谢

SELECT titleGame
FROM Game 
WHERE idGameType IN (
    SELECT idGameType 
    FROM GameType 
    WHERE nameGameType = 'Xbox')

这可以在Zend框架中以几种方式重写。下面是我通常使用的编写选择的方法

您还可以通过
Zend_Db_语句
创建PHP扩展

$sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
$stmt->execute(array('goofy', 'FIXED'));
第一种方法是面向对象的fluent接口,这是您将看到的最多的方法,也是我建议您开始使用的方法


有关详细信息,请通读,尤其是
Zend\u Db\u表选择
Zend\u Db\u表
,以及
Zend\u Db\u适配器
。即使快速通读数据库,特别注意数据库部分也是有帮助的。它将展示如何将表类设置为应用程序和数据库之间的网关。

可以通过几种方式在Zend Framework中重写。下面是我通常使用的编写选择的方法

SELECT titleGame FROM Game
LEFT JOIN GameType ON GameType.idGameType = Game.idGameType
WHERE GameType.nameGameType = 'Xbox'
您还可以通过
Zend_Db_语句
创建PHP扩展

$sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
$stmt->execute(array('goofy', 'FIXED'));
第一种方法是面向对象的fluent接口,这是您将看到的最多的方法,也是我建议您开始使用的方法

有关详细信息,请通读,尤其是
Zend\u Db\u表选择
Zend\u Db\u表
,以及
Zend\u Db\u适配器
。即使快速通读数据库,特别注意数据库部分也是有帮助的。它将展示如何将表类设置为应用程序和数据库之间的网关

SELECT titleGame FROM Game
LEFT JOIN GameType ON GameType.idGameType = Game.idGameType
WHERE GameType.nameGameType = 'Xbox'
为什么不使用联接呢?根据我的经验,中
的子选择在MySQL中非常慢

$select = $db->select();
$select->from('Game', array('titleGame'));
$select->joinLeft('GameType', 'GameType.idGameType = Game.idGameType', array());
$select->where("GameType.nameGameType = 'Xbox'");
为什么不使用联接呢?根据我的经验,
的子选择在MySQL中非常慢

$select = $db->select();
$select->from('Game', array('titleGame'));
$select->joinLeft('GameType', 'GameType.idGameType = Game.idGameType', array());
$select->where("GameType.nameGameType = 'Xbox'");

我尝试了一下,但没有成功(请参阅控制器的init函数)。我得到一个应用程序错误。例外情况是“选择查询无法与其他表联接”。如果我对嵌入式select返回的结果进行硬编码,那也没问题(请参阅)。因为您正在对子查询使用
Games
DbTable,该子查询正在查询
GameType
,请尝试在该查询的
select()
部分之后添加
setIntegrityCheck(false)
。或者你可以使用
应用程序\u Model\u DbTable\u游戏类型
进行子选择,然后你只需要按照现在的方式在第二次查询中使用
setIntegrityCheck(false)
。我尝试了一下,但没有成功(请参阅我控制器的init函数)。我得到一个应用程序错误。例外情况是“选择查询无法与其他表联接”。如果我对嵌入式select返回的结果进行硬编码,那也没问题(请参阅)。因为您正在对子查询使用
Games
DbTable,该子查询正在查询
GameType
,请尝试在该查询的
select()
部分之后添加
setIntegrityCheck(false)
。或者你可以使用一个<代码> ApdioToMyStudio.dBTabLygGalyype < /Case>为子选择,然后在第二个查询的方式下只需要<代码> StPixTimeChChest[Falue](代码)>代码。我会考虑你的答案。桌面开发者在这里。我用过数据库已经有一段时间了,我会考虑你的答案。桌面开发者在这里。我已经有一段时间没有使用数据库了。