【发布时间】:2016-12-20 03:23:56
【问题描述】:
我有一个键和值的二维数组
Array (
[conduct] =>
Array ( [databaseName] => conduct
[databaseKey] => 'localhost', 'root', '','conduct' )
[conducttest] =>
Array ( [databaseName] => conducttest
[databaseKey] => 'localhost', 'root', '','conducttest' )
[test] =>
Array ( [databaseName] => test
[databaseKey] => 'localhost', 'root', '','test' )
)
我的表单中有一个下拉列表,当用户选择我想与该数据库连接的任何数据库名称时,其中包含数据库名称。因此,为此我创建了二维数组并存储数据库名称及其连接字符串。
当表单提交时,我已将这些名称和连接字符串发送到 php。
这是我的 PHP 代码:
<?php
if(!isset($_SESSION)){session_start();}
include "includes/timezone.php";
$currentURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$currentURL .= $_SERVER["SERVER_NAME"];
$url = $_SERVER['PHP_SELF'];
$url = $currentURL.str_replace("/admin/connTo.php","",$url);
$key = isset($_REQUEST['key']) ? $_REQUEST['key'] : "";
$dbname = isset($_REQUEST['name']) ? $_REQUEST['name'] : "";
$conTo = mysqli_connect($key);
if (!mysqli_select_db($conTo, $dbname)) {
die("Error : ".mysqli_error($conTo));
}
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($conTo,"SET character_set_results='utf8'");
mysqli_query($conTo,"SET NAMES utf8");
mysqli_query($conTo,"SET GLOBAL time_zone='+05:30'");
mysqli_query($conTo,"SET time_zone='+05:30'");
mysqli_query($conTo,"SET system_time_zone='+05:30'");
mysqli_query($conTo,"SET GLOBAL max_connect_errors=100000");
mysqli_query($conTo,"SET GLOBAL max_connections=100000");
mysqli_query($conTo,"SET GLOBAL connect_timeout=100");
mysqli_query($conTo,"SET GLOBAL max_user_connections=100000");
if(isset($conTo) && isset($_REQUEST['key'])){
echo "1";
} else if(isset($_REQUEST['key'])){
echo "0";
}
?>
我 100% 确定 $key 获得正确的连接字符串,但我的代码显示以下错误:
警告:mysqli_connect():php_network_getaddresses:getaddrinfo 失败:/opt/lampp/htdocs/conductexam/admin/connTo.php 中的名称或服务未知 在线 13
警告:mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /opt/lampp/htdocs/conductexam/admin/connTo.php 第 13 行
警告:mysqli_select_db() 需要参数 1是 mysqli,布尔值在 /opt/lampp/htdocs/conductexam/admin/connTo.php 第 15 行
警告:mysqli_error() 期望参数 1 为 mysqli,布尔值在 /opt/lampp/htdocs/conductexam/admin/connTo.php 第 16 行
但是当我改为
$conTo = mysqli_connect('localhost', 'root', '','conduct');
一切正常。怎么样?
有人可以帮我吗?我非常感谢您的帮助。提前谢谢大家。
【问题讨论】:
-
以这种方式发送连接是一种可怕的做法。