わかりました、私はどこでも答えを探しましたが、本当の答えの代わりに、これはそこにいる誰にとってもまともな質問になると思いました:
mysqli の「mysqli_query」メンバー関数を使用する私のクラスのメンバー関数:
class mysqlidbconn extends mysqli {
protected $conn; //Or private $conn;
function dbconnect(){
$localHost = false;
$link = new mysqli("server","database username","password","databasename")
or ($die = true);
if ($link->connect_error){
die("Database selection failed: " . $link->connect_error);
}else{
$this->conn = $link;
}
}
そして、挿入/更新/削除/切り捨てクエリを実行するための問題のメンバー関数:
// To Execute Sql Query with no return result
function xQuery($sql) {
$this->conn->query($sql) or die("MySQL Query Execute Error: " .
$this->invDBConn->errorno . "<br>" . $this->conn->error . "<br>" . $sql
. "<br>");
}
テーブルで挿入と切り捨てを行う場合、上記の状況は、mysqlidbconn クラスを使用した以下のコードの例のように、クラス mysqlidbconn の PRIVATE または PROTECTED メンバー変数として初期化された $conn で完全に機能し、エラーは生成されませんが、更新もされません。 mysql テーブルに対して行われます。
<?php
require('path to php file containing mysqlidbconn class');
$msqli = new mysqlidbconn;
$msqli->dbconnect();
//This works
$sqlinsert = "insert into foo (foo_id, foo_field1...) values ('foo_id value',
'foo_field1 value',...);
$msqli->xQuery($sqlinsert);
//As does this
$sqltruncate = "truncate foo";
$msqli->xQuery($sqltruncate);
//But the below does not work, giving no error, result, etc.
$sqlupdate = "update foo set foo_field1='another foo_field1 value'";
$msqli->xQuery($sqlupdate);
ただし、$conn 変数を PUBLIC としてクラスを記述した場合、上記の
$sqlupdate = "update foo set foo_field1='another foo_field1 value'";
$msqli->xQuery($sqlupdate);
テーブルを正常に更新します。
私のmysqlidbconnクラスを書くときに私が見逃しているOOPに関して、ここで何が起こっているのですか?
フォーラムのルールに従って投稿されていないコードについてお詫び申し上げます。