我有以下sql(简化真正的问题):
SELECT *
FROM t
WHERE myname LIKE '%{$input}%';
Run Code Online (Sandbox Code Playgroud)
如何逃避$输入?
我不能使用quoteInto(除非我错过了什么).
如
$sql=$DB->quoteInto("SELECT *
FROM t
WHERE myname LIKE '%?%'",$input);
Run Code Online (Sandbox Code Playgroud)
会给我的
SELECT *
FROM t
WHERE myname LIKE '%'my input'%';
Run Code Online (Sandbox Code Playgroud)
和
$sql=$DB->quoteInto("SELECT *
FROM t
WHERE myname LIKE ?",'%'.$input.'%');
Run Code Online (Sandbox Code Playgroud)
会给我一些信息:
SELECT *
FROM t
WHERE myname LIKE '\%my input\%';
Run Code Online (Sandbox Code Playgroud) 我在网上搜索过,找不到能给我展示一个好例子的东西.我的问题基本上是这样的:
我该如何转换:
SELECT*FROM表WHERE((a = 1 AND b = 2)OR(c = 3 OR c = 4))AND d = 5;
要Zend语法类似于:
$ this - > select() - > from($ this - > _ schema.'.'.$ this - > _ name) - > where('a =?','1');
那怎么办呢?
非常感谢提前.
我正在尝试使用Zend DB select来执行此查询,但我无法这样做
这是sql查询
select shopping_id,shopping_details,"friend" as type from shopping
请注意我如何指定"朋友"作为类型,而朋友不是购物表中的列.
现在我如何在Zend中做到这一点.我试过这个但它给了我一个错误说"sh.friend Column不存在"
$select->from(array('sh'=>'shopping'),array('shopping_id','shopping_details','"friend" as type');
任何帮助将不胜感激
我是Zend Framework和MVC的新手,我对Zend_DB和与数据库交互的正确方法感到有些困惑.
我正在使用PDO MySQL适配器并创建了一些类来扩展抽象类:
class Users extends Zend_Db_Table_Abstract {
protected $_name = 'users';
protected $_primary = 'user_id';
protected $_rowClass = 'User';
public function getUserbyID($id) { /* code */ }
// More code here
}
class User extends Zend_Db_Table_Row_Abstract {
// Code here
}
class Widgets extends Zend_Db_Table_Abstract {
protected $_name = 'widgets';
protected $_rowClass = 'Widget';
public function getWidgetsfromUser($userid) { /* code */ }
// More code here
}
class User extends Zend_Db_Table_Row_Abstract {
public function doSomethingWithWidget() { /* code …Run Code Online (Sandbox Code Playgroud) 使用Zend_Db_Table从表中选择列的最大值的最简单最简单的方法是什么?基本上,我只想在Zend中运行此查询:
SELECT MAX(id) AS maxID FROM myTable;
Run Code Online (Sandbox Code Playgroud) 我试图使用Zend框架而不使用MVC结构,特别是Db_Table类.
我创建了几个代表我的数据库表的类,即
class DBTables_Templates extends Zend_Db_Table_Abstract
{
protected $_name = "templates";
}
Run Code Online (Sandbox Code Playgroud)
当我尝试实例化这个类(它被包括在内)时,我收到以下错误:
致命错误:未捕获异常'Zend_Db_Table_Exception',消息'找不到DBTables_Templates的适配器'
有谁知道我如何为Db_Table要使用的类创建和包含数据库适配器?
任何指针都非常感谢!我使用的是最新版本的ZF.
我和Magento一起工作了一年,并且学到了很多东西.现在我想学习Zend,我坚持使用模型.
我已经习惯了有实体和实体的集合中Magento的,并且很可能我会想使用Zend_Db_Table,Zend_Db_Table_Row和/或Zend_Db_Table_Rowset.我感到困惑的是每个班级的角色.
我知道我可以扩展每个类,我知道在我的Product_Table类(扩展Zend_Db_Table_Abstract)中,可以使用私有方法告诉Zend用于行和行集的类,但是我对它感觉不舒服.
在Magento中使用此代码:
例1
// I understand that maybe I'll use the `new` keyword instead
// Mage::getModel() is only for exemplification
$product = Mage::getModel('catalog/product');
$product->setName('product name');
$product->setPrice(20);
$product->save();
if($id = $product->getId()){
echo 'Product saved with id' . $id;
}
else{
echo 'Error saving product';
}
Run Code Online (Sandbox Code Playgroud)
例2
$collection = Mage::getModel('catalog/product')->getCollection();
// this is the limit, I'm ok with other method's name
$collection->setPageSize(10);
$collection->load()
foreach($collection as $product){
echo $product->getName() . ' …Run Code Online (Sandbox Code Playgroud) 我在翻译此查询以使用ZF时遇到一些问题Zend_Db_Select:
SELECT b.id, b.title, b.description
FROM memberships AS m
JOIN blogs AS b ON b.id = m.blog_id
WHERE m.user_id = ?
ORDER BY m.created
LIMIT 0, 30
Run Code Online (Sandbox Code Playgroud)
(此查询有效并返回结果)
Memberships是blogs和之间的链接表users.这是一件简单的| id | blog_id | user_id |事情.
这是我到目前为止所拥有的:
// $table = Zend_Db_Table instance, $id = a user id
$select = $table->select()
->from(array('m' => 'memberships'), array('b.id', 'b.title', 'b.description'))
->join(array('b' => 'blogs'), 'b.id = m.blog_id')
->where('m.user_id = ?', (int) $id)
->order('m.created DESC')
->limit(0, 30);
Run Code Online (Sandbox Code Playgroud)
这是我得到的(奇怪的(对我而言)错误: …
我想输出由Zend_Db_Table的select()语句生成的查询来测试porposes,但我不知道如何.
我用它来检索数据库连接atm.
$db = Zend_Db_Table::getDefaultAdapter();
Run Code Online (Sandbox Code Playgroud)
我在我的配置中设置了这样:
resources.db.adapter = pdo_mysql
resources.db.isDefaultTableAdapter = true
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = password
resources.db.params.dbname = db
resources.db.params.profiler.enabled = true
resources.db.params.profiler.class = Zend_Db_Profiler
Run Code Online (Sandbox Code Playgroud)
我想将所有内容输出到sql.log中.这可以应用于默认适配器吗?例如通过设置,所以我可以在生产环境中忽略它?
非常感兴趣.
我确实看过:如何使用Zend_Db启用SQL输出到日志文件?但它似乎没有涵盖我的问题.
/马库斯