这种情况就是这样,我正在尝试连接到我可以通过phpMyAdmin Web客户端访问但现在通过php脚本访问的大学数据库。
当我尝试常规mysqli_connect()
或什至像PDO一样
$pdo = new PDO("mysql:host=address; dbname=db_name", $user, $passwd);
我收到一条错误消息,告诉我服务器未正确响应或根本没有响应。
我问在那工作的IT人员,他告诉我不要使用mysqli,谷歌搜索我发现该包装器适用于旧的旧版MySQL函数,现在已弃用https://github.com/JaroslavHerber/php-mysql2pdo,该函数实际上可以连接数据库,但不要准备语句(此处显示的示例无效,prepare
函数似乎未定义。
我正在寻找某种解释,如果有人知道的话,首先是什么可能导致MySQLi的问题,以及如何解决此问题,希望使用比常规查询更安全的预处理语句
我正在运行的测试脚本是这样的:
/* Database credentials*/
define('DB_SERVER', "www2.udec.cl");
define('DB_USERNAME', 'caaind');
define('DB_PASSWORD', 'somepassword');
define('DB_NAME', 'somedatabase');
/* Attempt to connect to MySQL database */
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
使用存储库时,请先提及:
/* Attempt to connect to MySQL database */
$mysql_connect = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
mysql_select_db(DB_NAME, $mysql_connect);
$rPrepare = jhDb::getDb('caaind')->prepare('SELECT * FROM `Alumno` WHERE `matricula` = ?');
$rPrepare->execute(array("2015446013"));
while( $aRow = $rPrepare->fetch(PDO::FETCH_ASSOC) ) {
print_r($aRow); // This should return same array as above mysql_fetch_assoc()
}
并作为PDO:
$dsn = "mysql:host=www2.udec.cl;dbname=caaind";
$user = "someuser";
$passwd = "somepassword";
try {
$pdo = new PDO($dsn, $user, $passwd);
} catch (PDOException $e){
echo $e->getMessage();
}
$stm = $pdo->query("SELECT VERSION()");
$version = $stm->fetch();
echo $version[0] . PHP_EOL;
编辑:我正在使用php版本7.3.11
谢谢。