PHP MySqli、SSL和MySqli_real_escape_string赢得';行不通
当我用PHP、MySQLI和激活的SSL连接到外部MySQL数据库(MariaDB 10)时…:PHP MySqli、SSL和MySqli_real_escape_string赢得';行不通,php,ssl,mysqli,Php,Ssl,Mysqli,当我用PHP、MySQLI和激活的SSL连接到外部MySQL数据库(MariaDB 10)时…: /* create a connection object which is not connected */ $conn = new mysqli(); $conn->init( ); /* set connection options */ $conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeo
/* create a connection object which is not connected */
$conn = new mysqli();
$conn->init( );
/* set connection options */
$conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );
/*connect to server*/
$conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
…我不能使用:
mysqli_real_escape_string($conn, $_GET['clientid'])
……或者
$conn->mysqli_real_escape_string($_GET['clientid'])
结果将为空。当我禁用SSL时…:
$conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306);
…它会起作用的
在使用XAMPP的iMac上,它也可以使用SSL连接。只有当我使用PHP7.1将PHP脚本上传到我的Web空间(Strato www.Strato.de)时,它才不会与SSL连接一起工作
那么,为什么我不能在我的Web空间上使用带有ssl连接的“escape_string”
编辑:
这是我检查连接错误的方式:
function sql_connect($Datenbank){
$Servernr = get_ServerNr();
$Server = get_Server($Servernr);
$SQL_Servernr = $Server->Nr;
$SQL_Server = $Server->Url;
$SQL_Benutzer = $Server->Benutzer;
$SQL_Passwort = $Server->Passwort;
$SQL_Datenbank = $Datenbank;
$timeout = 5;
$conn = new mysqli();
$conn->init( );
$conn->options( MYSQLI_OPT_CONNECT_TIMEOUT, $timeout );
$conn->real_connect($SQL_Server, $SQL_Benutzer, $SQL_Passwort, $SQL_Datenbank, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
if ($conn->connect_errno) {
echo $conn->connect_errno;
die();
}
return $conn;
}
编辑2:
现在我激活了E_所有错误报告:
注意:在第101行的/mnt/web022/d2/18/51779718/htdocs/webservice\u config/dbserver2.php中使用未定义常量MYSQLI\u CLIENT\u SSL\u not\u VERIFY\u SERVER\u CERT-假定为'MYSQLI\u CLIENT\u SSL\u not\u VERIFY\u SERVER\u CERT'
警告:mysqli::real_connect()要求参数7为整数,字符串在第101行的/mnt/web022/d2/18/51779718/htdocs/webservice_config/dbserver2.php中给出
警告:mysqli_real_escape_string():第34行/mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php中的对象或资源mysqli无效
警告:mysqli_query():第38行/mnt/web022/d2/18/51779718/htdocs/webservice_imikelgo/test.php中的对象或资源mysqli无效
致命错误:未捕获错误:在第40行的/mnt/web022/d2/18/51779718/htdocs/webservice_-imikelgo/test.php中调用null上的成员函数fetch_assoc()。php:40堆栈跟踪:#0{main}抛出/mnt/web022/d2/18/51779718/htdocs/webservice_-imikelgo/test.php
对于XAMPP,我没有收到这个通知。如何解决此问题?为什么不使用参数化查询?连接上是否还有其他功能,即任何类型的查询?为什么不使用参数化查询?因为查询有很多参数,比如Id、uuid、client、network、xml、base64。我读过手册,但我没发现问题所在。连接上是否还有其他功能,即任何类型的查询?我试试看。请稍等。“有许多参数”不是不使用参数化查询的有效理由。查询结果也是空的。