[PR]
2024/11/24/Sunday
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
PHP PDO 1つずつprepare・bindValueしなくて済む方法
2013/09/03/Tuesday
where文を作るとき、検索条件がたくさん設定できると、ひとつずつprepareしてbindValueしてwhereとandで分けて……とやるのがめんどくさい。
そんなときの救世主コード↓
関数定義
使用例
これはすごい!きれいで便利!
そしてlikeもできる!
関数定義
使用例
参考URL
http://qiita.com/mpyw/items/c64ce7477169a710f755
そんなときの救世主コード↓
関数定義
function where($names, &$values) {
$wheres = $values = array();
foreach ($names as $name) {
if (isset($_REQUEST[$name]) && is_string($str = $_REQUEST[$name]) && $str !== '') {
$wheres[] = "{$name} = ?";
$values[] = $str;
}
}
return $wheres ? ' WHERE ' . implode(' AND ', $wheres) : '' ;
}
使用例
$pdo = new PDO('DSN', 'USERNAME', 'PASSWORD');
$params = array('name', 'gender', 'address');
$stmt = $pdo->prepare('SELECT * from myTable' . where($params, $values));
$stmt->execute($values);
これはすごい!きれいで便利!
そしてlikeもできる!
関数定義
function where($items, &$values) {
$wheres = $values = array();
foreach ($items as $item) {
$name = $item['name'];
$like = $item['like'];
if (isset($_REQUEST[$name]) && is_string($str = $_REQUEST[$name]) && $str !== '') {
if ($like) {
$wheres[] = "{$name} LIKE ?";
$values[] = '%' . addcslashes($str, '%_\\') . '%' ;
} else {
$wheres[] = "{$name} = ?";
$values[] = $str;
}
}
}
return $wheres ? ' WHERE ' . implode(' AND ', $wheres) : '' ;
}
使用例
$pdo = new PDO('DSN', 'USERNAME', 'PASSWORD');
$params = array(
array(
'name' => 'name',
'like' => FALSE,
),
array(
'name' => 'gender',
'like' => FALSE,
),
array(
'name' => 'address',
'like' => TRUE,
),
);
$stmt = $pdo->prepare('SELECT * from myTable' . where($params, $values));
$stmt->execute($values);
参考URL
http://qiita.com/mpyw/items/c64ce7477169a710f755
最新記事
(09/03)
(09/03)
(09/02)
(09/02)
(08/27)