我试图了解我是否使用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);
}
答案 0 :(得分:1)
如果您按住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的工作方式(带有嵌入式存根)使其很难解决,因为同一个方法不能在存根文件中具有具有不同方法签名的多个实现。