mysqli_stmt_init 正在 PhpStorm 中发出警告
mysqli_stmt_init is throwing a warning in PhpStorm
我想了解我是否使用 mysqli_stmt_init
方法做错了什么。
一切正常,但 PhpStorm 一直显示 Method call uses 1 parameters, but method signature uses 0 parameters
。这是什么意思?
我对所有内容进行了三重检查,并在谷歌上搜索了很长一段时间,但没有找到关于 PhpStorm 抛出此警告的原因。
function mysqliConnect(){
$connect = mysqli_connect(dbhost,dbuser,dbpass,dbname);
if (mysqli_connect_errno()) {
echo `Failed to connect to MySql with erro: ` . mysqli_connect_error();
}
mysqli_set_charset($connect, 'utf8mb4');
return $connect;
}
$connect = mysqliConnect();
$uid = mysqli_real_escape_string($connect, $uid);
$query = "SELECT * FROM `user` WHERE uid = ?";
$stmt = mysqli_stmt_init($connect); // <-- WARNING
if (!mysqli_stmt_prepare($stmt, $query)) {
echo 'SQL Error';
} else {
mysqli_stmt_bind_param($stmt, 'i',$uid);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
}
如果您按住 CTRL 并单击 mysqli_stmt_init()
函数,您将看到 JetBrains 用于智能感知的嵌入式存根。
/**
* Initializes a statement and returns an object for use with mysqli_stmt_prepare
* @link http://fr2.php.net/manual/en/mysqli.stmt-init.php
* @return mysqli_stmt
*/
function mysqli_stmt_init () {}
这些只有一个没有参数的实现(面向对象版本使用的那个)而不是采用单个 mysqli 参数的过程版本。
这显然是一个错误,但 Jetbrains Intellisense 的工作方式(使用嵌入式存根)使其很难解决,因为同一个方法不能在存根文件中有多个具有不同方法签名的实现。
我想了解我是否使用 mysqli_stmt_init
方法做错了什么。
一切正常,但 PhpStorm 一直显示 Method call uses 1 parameters, but method signature uses 0 parameters
。这是什么意思?
我对所有内容进行了三重检查,并在谷歌上搜索了很长一段时间,但没有找到关于 PhpStorm 抛出此警告的原因。
function mysqliConnect(){
$connect = mysqli_connect(dbhost,dbuser,dbpass,dbname);
if (mysqli_connect_errno()) {
echo `Failed to connect to MySql with erro: ` . mysqli_connect_error();
}
mysqli_set_charset($connect, 'utf8mb4');
return $connect;
}
$connect = mysqliConnect();
$uid = mysqli_real_escape_string($connect, $uid);
$query = "SELECT * FROM `user` WHERE uid = ?";
$stmt = mysqli_stmt_init($connect); // <-- WARNING
if (!mysqli_stmt_prepare($stmt, $query)) {
echo 'SQL Error';
} else {
mysqli_stmt_bind_param($stmt, 'i',$uid);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
}
如果您按住 CTRL 并单击 mysqli_stmt_init()
函数,您将看到 JetBrains 用于智能感知的嵌入式存根。
/**
* Initializes a statement and returns an object for use with mysqli_stmt_prepare
* @link http://fr2.php.net/manual/en/mysqli.stmt-init.php
* @return mysqli_stmt
*/
function mysqli_stmt_init () {}
这些只有一个没有参数的实现(面向对象版本使用的那个)而不是采用单个 mysqli 参数的过程版本。
这显然是一个错误,但 Jetbrains Intellisense 的工作方式(使用嵌入式存根)使其很难解决,因为同一个方法不能在存根文件中有多个具有不同方法签名的实现。