[PR]
2024/11/24/Sunday
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
PHP PDO prepareでLIKE(部分一致)検索するときのbindValueのパラメータ
2013/09/03/Tuesday
ふつうに「%」で括ってもうまくいかない。
sqlを直に実行するとふつうに動くので、bindValueがうまくいっていない模様。
原因は、「%」をくっつけるタイミングでした。
sql文中ではなく、bindValueのときに付けてあげるのが正しいみたい。
ちなみに間違ったのはこういう記述↓
あとこれも↓
参考URL
http://okwave.jp/qa/q3863004.html
sqlを直に実行するとふつうに動くので、bindValueがうまくいっていない模様。
原因は、「%」をくっつけるタイミングでした。
$query = "select * from table where testdata like :value ";
$stmt = $pdo->prepare($query);
$stmt->bindValue(":value", '%'. $value .'%', PDO::PARAM_STR);
sql文中ではなく、bindValueのときに付けてあげるのが正しいみたい。
ちなみに間違ったのはこういう記述↓
$query = "select * from table where testdata like %:value% ";
あとこれも↓
$query = "select * from table where testdata like ':value' ";
参考URL
http://okwave.jp/qa/q3863004.html
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
PHP/MySQL PDOの「SET NAMES」の代替策
2013/09/02/Monday
MySQLから取得したデータの文字コード指定。
SET NAMESは非推奨らしいので、代わりになる書き方を探しました。
これでできるみたい↓
参考URL→
http://me.beginsprite.com/archives/889
間違ってたみたいです!!!
参考→http://qiita.com/hiro_y/items/6fabdef669e35e92bdc4
SET NAMESは非推奨らしいので、代わりになる書き方を探しました。
これでできるみたい↓
try {
$pdo = new PDO($db_dsn,$db_user, $db_password,
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`"
)
);
} catch (PDOException $e) {
die($e->getMessage());
}
参考URL→
http://me.beginsprite.com/archives/889
間違ってたみたいです!!!
参考→http://qiita.com/hiro_y/items/6fabdef669e35e92bdc4
PHP PDOのfetchとfetchallの使い分け
2013/09/02/Monday
PDO関数を使ってのMySQL接続を勉強中。
fetchallはなんとなくつかめたけど、fetchがどうもしっくりこない。
使い分けはトラフィックとかそのあたりみたい。
でもとりあえずfetchallで大丈夫なとこはそれでいいかなぁ。。。
ブクマメモ。
http://nkd920.blog10.fc2.com/blog-entry-36.html
fetchallはなんとなくつかめたけど、fetchがどうもしっくりこない。
使い分けはトラフィックとかそのあたりみたい。
でもとりあえずfetchallで大丈夫なとこはそれでいいかなぁ。。。
ブクマメモ。
http://nkd920.blog10.fc2.com/blog-entry-36.html
WordPressプラグイン作成 check_admin_refererとsave_postフックのエラー
2013/08/27/Tuesday
記事をインポートするプラグインを動かしたところ、「本当によろしいですか?」とメッセージが出るだけでその先に進めない(OKボタンが出てこない)
で、タイトルを見ると「WordPress エラー通知」と出てるので、どこかでプラグインが競合してるっぽい。
調べた結果、save_postのフックの処理が動いてしまっていました。
インポート時も動くんですねー。
そしてcheck_admin_refererのあたりで落ちているようです。
引数のnonceの値が取れてないよ!というのが原因。
nullのチェックはしてくれない模様。
無理矢理ですが、こんなかんじで回避。
ちなみにsave_postは投稿画面だけでなく固定ページでも動いてしまいます。
「post」だから記事だけなのかと思ってた。。。
で、タイトルを見ると「WordPress エラー通知」と出てるので、どこかでプラグインが競合してるっぽい。
調べた結果、save_postのフックの処理が動いてしまっていました。
インポート時も動くんですねー。
そしてcheck_admin_refererのあたりで落ちているようです。
引数のnonceの値が取れてないよ!というのが原因。
nullのチェックはしてくれない模様。
//※nonceの値が取得できない場合は終了
if( ! $_POST['nonce_field']){
return $_POST->ID;
}
無理矢理ですが、こんなかんじで回避。
ちなみにsave_postは投稿画面だけでなく固定ページでも動いてしまいます。
「post」だから記事だけなのかと思ってた。。。
最新記事
(09/03)
(09/03)
(09/02)
(09/02)
(08/27)