Dwi*_*ght 32 php mysql pdo laravel laravel-4
如何在Laravel 4中转义传递给原始查询的参数?我期待类似的东西DB::escape()(从Laravel 3响起铃声)并尝试DB::quote()(我认为可以通过PDO对象获得)
$query = DB::select("SELECT * FROM users WHERE users.id = " . DB::escape($userId));
Run Code Online (Sandbox Code Playgroud)
我们不能将select方法与占位符一起使用,因为上面只是我们尝试实现的简化示例.我们有一个大型自定义查询,其中包含一些无法适应查询构建器的嵌套选择查询.
插入Laravel 4之前逃避某些事情的最佳方法是什么?
编辑:
我刚刚发现你可以访问PDO对象并以这种方式使用quote函数.这仍然是最好的方法,还是有更简单的方法来访问此功能?
DB::connection()->getPdo()->quote("string to quote");
Run Code Online (Sandbox Code Playgroud)
Dwi*_*ght 59
你可以通过DB门面以这种方式引用你的字符串.
DB::connection()->getPdo()->quote("string to quote");
Run Code Online (Sandbox Code Playgroud)
当我发现它时,我确实把这个答案放在我的问题中,但是我现在把它作为一个实际的答案,让其他人更容易找到.
小智 19
$value = Input::get("userID");
$results = DB::select( DB::raw("SELECT * FROM users WHERE users.id = :value"), array(
'value' => $value,
));
Run Code Online (Sandbox Code Playgroud)
更多细节在这里
您也可以试试这个,(阅读文档)
$results = DB::select('SELECT * FROM users WHERE users.id = ?', array($userId));
Run Code Online (Sandbox Code Playgroud)
我使用的两个答案在外观中内置了不太冗长的解决方案DB。
首先,值引用:
// From linked answer
DB::connection()->getPdo()->quote("string to quote");
// In the DB facade
DB::getPdo()->quote('string to quote');
Run Code Online (Sandbox Code Playgroud)
二、标识符引用(表名和列名):
// From linked answer
DB::table('x')->getGrammar()->wrap('table.column');
// In the DB facade
DB::getQueryGrammar()->wrap('table.column');
Run Code Online (Sandbox Code Playgroud)
我在 Laravel 中寻找通用 sql 转义时发现了这个问题。我实际需要的是表/列名称转义。因此,以供将来参考:
/**
* Quotes database identifier, e.g. table name or column name.
* For instance:
* tablename -> `tablename`
* @param string $field
* @return string
*/
function db_quote_identifier($field) {
static $grammar = false;
if (!$grammar) {
$grammar = DB::table('x')->getGrammar(); // The table name doesn't matter.
}
return $grammar->wrap($field);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37998 次 |
| 最近记录: |