Php MySQLi包装器-奇怪的where子句问题?
我目前正在使用joshcam's,它有很多星星和叉子。然而,即使它得到了所有的关注,它似乎缺少了一些功能——或者我误解了如何使用它 当我使用他创建的where子句函数时,我输入的变量周围似乎没有引号。这就像我必须手动将引号添加到变量的开头和结尾,即使它们是预先准备好的语句,这是违反直觉的 我试着联系他,但运气不好,所以我来了 下面是示例代码:Php MySQLi包装器-奇怪的where子句问题?,php,mysqli,wrapper,Php,Mysqli,Wrapper,我目前正在使用joshcam's,它有很多星星和叉子。然而,即使它得到了所有的关注,它似乎缺少了一些功能——或者我误解了如何使用它 当我使用他创建的where子句函数时,我输入的变量周围似乎没有引号。这就像我必须手动将引号添加到变量的开头和结尾,即使它们是预先准备好的语句,这是违反直觉的 我试着联系他,但运气不好,所以我来了 下面是示例代码: $db->where ('name', 'John Doe'); $results = $db->get ('users'); echo $d
$db->where ('name', 'John Doe');
$results = $db->get ('users');
echo $db->getLastQuery();
然而,以下是它的输出:
从name=John Doe的用户中选择*
因此,除非我遗漏了什么(并且我仔细地扫描了文档),否则我必须在where函数中的每个变量周围加引号?为什么他没有加入这个,为什么这么多人喜欢这个包装,如果这样一个明显的功能缺失?准备好的声明的全部好处是,它们可以处理引用和所有事情,因此如果我做得正确,这是违反直觉的
编辑:更进一步。在他的“Where”条款bit下的文档中,它说:
或案例
然而,当我将准确的代码放入文件并回显查询时,它仍然没有显示引号。准备语句的全部目的是避免在查询体中引用和插入值。通过快速查看链接到的代码,它似乎可以安全地生成和执行查询,并使用
replacepholders
方法(仅用于生成带有内联占位符值的查询副本,并将其保存到\u lastQuery
以供将来参考,而不是执行)是问题所在。$results
是否实际返回有效结果?如果是,则报告的查询不是它实际运行的查询。项目页面上打开了很多问题,据我所知,没有一个提到需要引用,所以我想知道这是否真的是一个问题?@halfer:问题在于,占位符被替换为不带引号的值。但该方法仅用于填充lastQuery
属性,而不是实际执行查询。
$db->where ('firstName', 'John'); $db->orWhere ('firstName', 'Peter');
$results = $db->get ('users');
// Gives: SELECT * FROM users WHERE firstName='John' OR firstName='peter'