
php にて mysqli_query() をつかってnull値が存在するテーブルを出力する場合どの...
2014/3/616:39:59
php にて mysqli_query() をつかってnull値が存在するテーブルを出力する場合どのようにしたらいいでしょうか?
こんにちは。
php で質問があります。
php にて mysqli_query() をつかってnull値が存在するテーブルを出力する場合どのようにしたらいいでしょうか?
以下のようにすると次のように出てしまいます。
$db = ('localhost', 'user', 'pass', 'database');
$query = "select * from table_name";
mysqli_query($db, $query)
-------
mysqli_query() expects parameter 1 to be mysqli, null given in ~
null値も含めたものを出力するにはどのようにすればいいでしょうか?
またnul値を含めるとセキュリティ的に危険なことはありますか?
回答お願いいたします。
補足雑な書き方大変申し訳ございませんでした。
$db = mysqli_connect(HOST, USER, PASS, DB_NAME);
if(mysqli_connect_errno()){printf(mysqli_connect_error()); exit(); }// エラーは出ていません。
$query = "SELECT * FROM TABLE_NAME";
$result = mysqli_query($db, $query);
//エラーが出ます。
読んでみます!
Mysqliクラスの項で 手続き型を採用すべき と書いてありますがオブジェクト指向型で書いたほうがいいのでしょうか?
ベストアンサーに選ばれた回答
編集あり2014/3/617:45:28
コンストラクタも正しく書けていないようでは「出直してきて」って言われかねませんね…
Qiita - PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71
Mysql関数はPHPマニュアルが公式に非推奨としていますが、Mysqliの手続き型の場合も同様に非推奨とさせていただきたいですね、個人的には。その理由は上記まとめ中にも記載したとおりです。オブジェクト指向でのコーディングを検討してください。
【Mysqli手続き型(コードが汚くなるので使わないでほしい)】
$db = mysqli_connect('localhost', 'user', 'pass', 'database');
if (mysqli_connect_errno()) { die(mysqli_connect_error()); }
mysqli_set_charset('utf8') or die(mysqli_error($db));
$result = mysqli_query($db, "select * from table_name") or die(mysqli_error($db));
$rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
【Mysqliオブジェクト指向(こっちを使ってほしい)】
mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR);
try {
$db = new mysqli('localhost', 'user', 'pass', 'database');
$db->set_charset('utf8');
$rows = $db->query("select * from table_name")->fetch_all(MYSQLI_ASSOC);
} catch (mysqli_sql_exception $e) {
echo $e->getMessage();
}
【PDO(これが一番おすすめ)】
try {
$db = new PDO('mysql:dbname=database;host=localhost;charset=utf8', 'user', 'pass');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$rows = $db->query("select * from table_name")->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo $e->getMessage();
}
>> null値が存在するテーブルを出力する場合
>> null値も含めたものを出力するにはどのようにすればいいでしょうか?
なんか質問変わってませんか?MySQLのNULL値はPHPのNULL値として取り出されますよ。
>> またnull値を含めるとセキュリティ的に危険なことはありますか?
NULL文字とNULL値は全く異なるものであり、そういった危険性は全くありません。というかPHPの多くの関数はNULL文字を正しく処理できますので。
【追記】
>> $result = mysqli_query($db, $query);
>> //エラーが出ます。
$query = "SELECT * FROM TABLE_NAME";
というSQL文自体には文法的な誤りはないので、TABLE_NAME という名前のテーブルが存在していないとかでは…?また、次回からはエラー内容を貼るようにしてください。その方が的確なアドバイスが出来ます。文字数的にきついようであれば http://pastebin.com や http://ideone.com などのサイトも活用してください。後者はコマンドラインからの実行も可能ですね。
>> Mysqliクラスの項で 手続き型を採用すべき と書いてありますがオブジェクト指向型で書いたほうがいいのでしょうか?
これはmysqli_report関数に関してのみの言及ですね。ここまでオブジェクト指向で書くと
$mysqli_driver = new mysqli_driver();
$mysqli_driver->report_mode = MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR;
のような設定方法になり、ぜんぜんしっくりこなくなってしまうと思います。 「$mysqli_driver と $db がどう関係あるんだよ!」って話ですよね。そんなことするぐらいなら
mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ERROR);
の方がいいんじゃないか?という意味です。他の部分はオブジェクト指向で書いてください。
質問した人からのコメント
2014/3/6 17:49:17
回答ありがとうございました。
Qiita - PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71
をよんでPDOクラスの勉強をして出直してきます。
また質問すると思います。 よろしくお願いします
ベストアンサー以外の回答
1〜1件/1件中
編集あり2014/3/617:00:46
>$db = ('localhost', 'user', 'pass', 'database');
これ、何ですか(このままだとエラーになりますよね)。
>mysqli_query() expects parameter 1 to be mysqli, null given in ~
おそらく、$db が(接続リソースでなく)nullになっているというエラーだと思いますが、$dbがちゃんとconnect出来ているかチェックしていますか?
正直「null値が存在する」とかいう以前の問題だと思いますが、提示されているソースが中途半端なので何とも言えません。mysqli_queryの戻り値を変数に入れないと、ここから先の処理も書けない(fetchできない)だろうし・・・
あわせて知りたい
- ec-cube3.0で商品詳細ページに在庫数を簡単に表示する方法はないでしょうか? プ...
- include_path はどこで変更するのですか。 PHPはただいま入門本を読みながら勉強...
- PHP to DBで質問です。 Call to a member function bindParam() on a non-object ...
- データベースのデータをphpで表示すると、文字化けを起こして???になってしま...
- mysqli構文が使えない。 php mysqlともに、5以上のバージョンです。 mysql構文...
- HTMLでサイトを作るとき、無駄な空白や改行が多いと、作ったサイトは重くなります...
- phpで、配列の値をsqlで使えるようエスケープする方法を教えて頂けないでしょうか...
- Mysqliでデータベースからデータを持ってきたい。 しかし、エラーが出る>< 私は...
- 【span class】【span id】をVBAでテキストとして取り出したい。 VBA超初心者...
- 子供が通信が低速化する度パケット料金を勝手に追加してあたので 低速化のメール...
このカテゴリの回答受付中の質問
- PHP or Excel 異なるPNG画像を1つずつ読み込んで連続印刷したい 100枚ある...
- PHPの質問 PHPでsqlite3のエラーdatabase is lockedがでました。 これが出た...
- paypal developerから REST API appsというのを作成しました。 サイトの決済に...
- laravel Contact.php のstaticに追加しても反映されずエラーになる。 laravel...
- 現在VPSサーバーを借りて運用しています。 サーバーとPHP上の時間の取扱について...
- 福岡でパソコンの、PHPプログラミング言語を教えてくれるスクールはありますか? ...
このカテゴリの投票受付中の質問
この質問につけられたタグ
専門家が解決した質問
年上の人を好きになっちゃいました
回答受付中の質問
カテゴリQ&Aランキング
- 戻る
- 次へ
総合Q&Aランキング
思いもよらぬ事態に困惑
みんなのアンテナ
Yahoo!知恵袋カテゴリ
お客様自身の責任と判断で、ご利用ください。

