我有一个扩展的登录类,它扩展了php中的标准mysqli类
<?php
require_once("Config.php");
define(MYSQL_HOST, "host");
define(MYSQL_USER, "user");
define(MYSQL_PW, "password");
define(MYSQL_DB, "db");
/**
* MysqlDB default wrapper, extend this if more specific needs are meant. Contains some helper functions for Select, Insert and Update.
* @author Jerrpan
* @version 1
*
*/
class DB extends mysqli
{
/**
* Connects to db specified in Config.php file
* @throws MysqlConnectError
* On failed connection
*/
function __Construct() {
parent::__construct(MYSQL_HOST, MYSQL_USER, MYSQL_PW, MYSQL_DB);
if($this->connect_error) {
throw new MysqlConnectError($this->connect_error); }
}
/**
* Finds out if db is up or not
*/
private function isCon() {
return $this->ping();
}
/**
* Executes an Select statment
* @param Assoc Array $data
* Array(
* "column" => "column1, column2",
* "table" => "table1, table2",
* "where" => "column1 = value",
* "join" => "INNERJOIN table ON column1 = column2",
* "orderby" => "id DESC",
* "limit" => 100
* )
* @throws MysqlConnectError
* On lost mysql connection
* @throws MysqlInvalidQuery
* On invalid query
* @return void|stmt()
* On success an stmt object for further useage like storing and fetching.
*/
public function Select($data) {
if(!$this->isCon()) { throw new MysqlConnectError("Connection shut down"); }
foreach($data as $key => $value) {
if($value{0} == ",") { throw new MysqlInvalidQuery("Start or stop char cant be ,"); }
if($value{strlen($value)} == ",") { throw new MysqlInvalidQuery("Start or stop char cant be ,"); }
}
if(isset($data["column"])) {
$column = " SELECT {$data["column"]} ";
} else {
throw new MysqlInvalidQuery("You have to specify columns");
}
if(isset($data["table"])) {
$table = " FROM {$data["table"]} ";
} else {
throw new MysqlInvalidQuery("You have to specify tables");
}
if(isset($data["where"])) {
$where = " WHERE {$data["where"]} ";
}
if(isset($data["join"])) {
$innerjoin = " {$data["innerjoin"]} ";
}
if(isset($data["orderby"])) {
$orderby = " {$data["orderby"]} ";
}
if(isset($data["limit"])) {
$limit = " LIMIT {$data["limit"]} ";
}
$stmt = $this->query("$column $table $where $innerjoin $orderby $limit");
if(!$stmt) { throw new MysqlInvalidQuery("Invalid query"); return;}
return $stmt;
}
/**
* Executes an insert statement
* @param String $table
* The table to insert data into, can only be one
* @param Assoc Array $data
* The data to insert as Colum => Value
* @throws MysqlConnectError
* On lost db connection
* @throws MysqlInvalidQuery
* On invalid query
* @return boolean|void
* True on success
*/
public function Insert($table, $data) {
$ins_table;
$ins_value;
if(!$this->isCon()) { throw new MysqlConnectError("Connection shut down"); }
if(strstr($table, ",") != false) { throw new MysqlInvalidQuery("Several tables cant be inserted in one query"); }
foreach($data as $key => $value) {
$ins_table .= "$key,";
$ins_value .= "$value,";
}
$ins_table = substr($ins_table, 0, -1);
$ins_value = substr($ins_value, 0, -1);
$this->query("INSERT INTO $table($ins_table) VALUES($ins_value)");
if($this->affected_rows == 1) { return true; } else { throw new MysqlInvalidQuery("Invalid query"); }
}
/**
* Executes an update statement
* @param String $table
* The table to update, can not be more than one
* @param Assoc Array $data
* The data to update the rows with in the context Column => Value
* @param String $where
* The where statement without the WHERE
* @param number $limit
* The limit, the default limit is 100
* @throws MysqlConnectError
* On lost connection
* @throws MysqlInvalidQuery
* On an invalid query
* @return boolean|void
* On success true, on no affected rows false
*/
public function Update($table, $data, $where, $limit = 100) {
$ins;
if(!$this->isCon()) { throw new MysqlConnectError("Connection shut down"); }
foreach($data as $key => $value) {
$ins .= " $key = $value , ";
}
$ins = substr($ins, 0, -2);
$stmt = $this->query("UPDATE $table SET $ins WHERE $where LIMIT $limit" );
if(!$stmt) { throw new MysqlInvalidQuery("Invalid query"); }
if($this->affected_rows > 0) { return true; }
return false;
}
}
class MysqlConnectError extends Exception {}
class MysqlInvalidQuery extends Exception {}
然后通过将require_once('path/to/mysqlclass.php')
添加到另一个脚本并创建DB()的新对象来使用。
所以一切都很好。然而,当我试图require_once('../path/to/mysqlpath.php)
(notice ../)
我得到以下错误:
mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in etc…
我完全被这个震惊了,那么这个问题的原因是什么呢我该怎么补救呢?
require_once('../path/to/mysqlpath.php)
后请检查
MYSQL_HOST
的内容
通常误差php_network_getaddresses: getaddrinfo failed
表示,您的服务器无法将域名example.com解析为IP地址。因此,要么dns服务器不可达,要么你的web服务器的dns客户端配置错误,要么主机名错误。