php にて mysqli_query() をつかってnull値が存在するテーブルを出力する場合どのようにしたらいいでしょうか?

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クラスの項で 手続き型を採用すべき と書いてありますがオブジェクト指向型で書いたほうがいいのでしょうか?

PHP2,741閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

コンストラクタも正しく書けていないようでは「出直してきて」って言われかねませんね… 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.comhttp://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); の方がいいんじゃないか?という意味です。他の部分はオブジェクト指向で書いてください。

ThanksImg質問者からのお礼コメント

回答ありがとうございました。 Qiita - PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 をよんでPDOクラスの勉強をして出直してきます。 また質問すると思います。 よろしくお願いします

お礼日時:2014/3/6 17:49

その他の回答(1件)

0

>$db = ('localhost', 'user', 'pass', 'database'); これ、何ですか(このままだとエラーになりますよね)。 >mysqli_query() expects parameter 1 to be mysqli, null given in ~ おそらく、$db が(接続リソースでなく)nullになっているというエラーだと思いますが、$dbがちゃんとconnect出来ているかチェックしていますか? 正直「null値が存在する」とかいう以前の問題だと思いますが、提示されているソースが中途半端なので何とも言えません。mysqli_queryの戻り値を変数に入れないと、ここから先の処理も書けない(fetchできない)だろうし・・・