プロが教える店舗&オフィスのセキュリティ対策術

環境:mySQL、PHP

セレクト文で対象カラムの中にデータが入っているか否かを
確認するphpの書き方を教えていただけないでしょうか。。

例:
たとえば、カラム名 no に1が入っていて
そのレコードにある bunsyo の中にデータが入っているか否かを確認したいと
考えてます。

$kakunin = mysql_query("select bunsyo from テーブル名 where no=1 ");

上記だとデータを参照するだけなので、、、
入っているかいないかを確認したいと考えてます。

返ってくるのが
true=1、false=0 とかで返ると次の処理がしやすいので助かります。。。

よろしくお願い致します。

A 回答 (2件)

まず、非推奨のMysql関数を使うのはやめましょう。



データベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71


【PDOクラスを使う場合】

上記まとめで説明している通り、

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true

をコンストラクタで設定すれば、SELECTに対してもrowCountメソッドが実行できるようになるので、幾分か使い勝手がよくなるはずです。

$no = 1;
$sql = 'SELECT bunsyo FROM テーブル名 WHERE no = ?';

$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, $no, PDO::PARAM_INT);
$stmt->execute();

if ($stmt->rowCount()) { .... }


【Mysql関数を使う場合】

mysql_num_rows関数がその役割を担います。
http://php.net/manual/ja/function.mysql-num-rows …
    • good
    • 1
この回答へのお礼

非推奨だったんだ。。。ご指摘ありがとうございます。
参考になりました。

お礼日時:2013/11/24 00:15

ネイティブなMySQLがすでにオワコンであることの指摘はすでにあるようなので割愛。



>bunsyo の中にデータが入っているか否かを確認したい

データが入っていない場合の初期値はどう設定されているのでしょうか(空文字列とNULLは違う扱いになります)。初期値がNULLに設定されていれば

select * from テーブル名 where (no=1)and(bunsyo is null)

が返す行数で判断すればいいと思います(最初のfetchの真偽値でもいいです)。
    • good
    • 0
この回答へのお礼

オワコンって言葉知らなかったです、、勉強になりました。
例文記載ありがとうございます。

お礼日時:2013/11/24 00:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!