我有一个扩展的登录类,它扩展了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)
(注意../)
我收到以下错误:
mysqli :: mysqli():php_network_getaddresses:getaddrinfo failed:名称或服务在其他地方未知......
我对此完全感到震惊,所以造成这个问题的原因是什么 我该如何解决?
答案 0 :(得分:0)
在require_once('../path/to/mysqlpath.php)
之后,请检查
MYSQL_HOST
的内容。
通常错误php_network_getaddresses: getaddrinfo failed
表示,
您的服务器无法将域名example.com解析为IP地址。
因此,无论是dns服务器无法访问,还是网络服务器的DNS客户端配置错误,或者主机名称错误。