質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2341閲覧

PHP クラスのparameter

a-_.

総合スコア133

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/09/27 03:08

PHPのクラスで各メソッド毎にファイルを作成してデータベースにアクセスし、そこから出力するという処理を行いたいんですが
⓵mysqli_query() expects at least 2 parameters, 1 given
⓶mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given
とエラー表示されました

⓵引数が1つしか渡されていないというのは理解できているんですが、データベースへアクセスするクラスの引数を定義するよう指示されてるものと考えて実行してみても改善しませんでした
定義がどのようなものなのかがよく分かりません

⓶queryの処理を取得する為の引数が1つ不足していると考えたんですが、mysqli_resultのマニュアルを読んでも、この解釈が合っているのか教えてください

PHP

1//メインのクラス 2<?php 3 require_once("XXX.php"); 4 5 if (isset($_POST['name'], $_POST['comment'], $_POST['bbs']) && $_POST['bbs'] == "post") { 6 require("XXX1.php"); 7 $p_obj = new Post(); 8 $p_obj->name = $_POST['name']; 9 $p_obj->comment = $_POST['comment']; 10 $p_obj->post(); 11 } elseif (isset($_POST['bbs']) && $_POST['bbs'] == "update") { 12 require("XXX2.php"); 13 $u_obj = new Update(); 14 $u_obj->name = $_POST['name']; 15 $u_obj->comment = $_POST['comment']; 16 $u_obj->chk = $_POST['chk']; 17 $u_obj->update(); 18 } elseif (isset($_POST['bbs']) && $_POST['bbs'] == "delete") { 19 require("XXX3.php"); 20 $d_obj = new Delete(); 21 $d_obj->chk = $_POST['chk']; 22 $d_obj->delete(); 23 } 24 25 require("XXX4.php"); 26 $l_obj = new List_table; 27 $data = $l_obj->list(); 28 echo strlen($data); 29?>

PHP

1//XXX.php データベース接続クラス 2<?php 3 class Db { 4 public $class; 5 public function connect() { 6 $this->class = mysqli_connect("XXX", "XXX", "XXX", "XXX") or die("NG"); 7 mysqli_select_db("XXX", $this->class); 8 } 9 10 public function close() { 11 mysqli_close($this->class); 12 } 13 } 14?>

PHP

1//XXX1.php 2<?php 3 require_once("XXX.php"); 4 5 class Post extends Db { 6 public $name; 7 public $comment; 8 public function post() { 9 $this->connect(); 10 mysqli_query("INSERT INTO XXX(name, comment) VALUES('$this->name', '$this->comment')"); 11 $this->close(); 12 } 13 } 14?>

PHP

1//XXX2.php 2<?php 3 require_once("XXX.php"); 4 5 class Update extends Db { 6 public $name; 7 public $comment; 8 public $chk; 9 public function update() { 10 $this->connect(); 11 for($i = 0; $i < count($this->chk); $i++) { 12 mysqli_query("UPDATE XXX SET name = '$this->name', comment = '$this->comment' WHERE id = '".$this->chk[$i]."'"); 13 } 14 $this->close(); 15 } 16 } 17?>

PHP

1//XXX3.php 2<?php 3 require_once("XXX.php"); 4 5 class Delete extends Db { 6 public $chk; 7 public function delete() { 8 $this->connect(); 9 for($i = 0; $i < count($this->chk); $i++) { 10 mysqli_query("DELETE FROM XXX WHERE id = '".$this->chk[$i]."'"); 11 } 12 $this->close(); 13 } 14 } 15?>

PHP

1//XXX4.php 2<?php 3 require_once("XXX.php"); 4 5 class List_table extends Db { 6 public $result; 7 public $row; 8 public function bbslist() { 9 $this->connect(); 10 $get = mysqli_query("SELECT * FROM XXX ORDER BY time DESC"); 11 $i = 0; 12 $this->result = null; 13 while($this->row = mysqli_fetch_assoc($get)) { 14 $this->result[$i] = array('name' => $this->row['name'], 'comment' => $this->row['comment']); 15 $i++; 16 } 17 $this->close(); 18 return $this->result; 19 } 20 } 21?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

date

2016/09/27 03:14

ちょっと前から思ってたのですが、たった一個の処理のためにファイルを分けるのですか?
退会済みユーザー

退会済みユーザー

2016/09/27 03:16

あなたのソースは「オブジェクト指向型」じゃなく「手続き型」の方だと思いますが正しいドキュメントをみていますか?
guest

回答2

0

マニュアルみてますか?
これを読んだ上でどこかわからないことがありますか?

投稿2016/09/27 03:25

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

とりあえずmysqli_queryに限って言えば、下記マニュアルの手続き型の方を見てください。
http://php.net/manual/ja/mysqli.query.php
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

基本的な使い方などは、紹介しているサイトは多数あるので参考にしてください。
http://nob-log.info/2013/04/18/php-mysqli_connect/

投稿2016/09/27 03:56

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問