これは簡単な答えに違いないと確信していますが、私はそれを見ていません。残りのすべてのコードを簡素化するために、すべてのデータベース コードをクラスに移動して実験しています。
このエラーが発生しましたが、理由がわかりません
Fatal error: Using $this when not in object context in /var/www/php/dbclass.php on line 18 (18 行目に矢印を付けました)
ここに私のクラスがあります
<?php
class kdb {
var $dbhost = "localhost";
var $dbname = "name";
var $dbuser = "root";
var $dbpass = "pass";
var $error;
// function __construct($persons_name) {
// $this->name = $persons_name;
// }
//function to insert safely
public static function exe($qry_string, $var_array) {
$host = $this->dbhost; <------------------ LINE 18
$name = $this->dbname;
$user = $this->dbuser;
$pass = $this->dbpass;
$retries = 30;
while ($retries > 0) {
try {
$pdo_conn = new PDO("mysql:host={$host};dbname={$name}", $user, $pass);
$retries = 0;
//echo 'run query';
} catch (PDOException $e) {
$retries--;
sleep(1); // Wait 1s between retries.
log::enter_log("Error connecting: {$retries} retries left");
}
}
$q = $pdo_conn->prepare($qry_string);
$q->execute($var_array);
$return_arr = $q->fetchAll();
$this->error = $q->errorInfo();
//dbconn::logquery($qry_string, $var_array, $q->rowCount(), $error[2]);
return $return_arr;
}
}
?>
ページ上のコード
$db = new kdb();
$db_list = $db->exe('select * from table where id = ?', array(42));
var_dump($db_list);
まだ半分しか完成していないことに注意してください。現時点では、必要以上に複雑になっていることを認識しています。