【发布时间】:2019-01-02 01:24:35
【问题描述】:
我试图了解我是否在 mysqli_stmt_init 方法上做错了。
一切正常,但 PhpStorm 一直显示Method call uses 1 parameters, but method signature uses 0 parameters。这是什么意思?
我已经对所有内容进行了三次检查,并在 Google 上搜索了很长一段时间,但没有找到 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);
}
【问题讨论】:
-
由于您使用的是
mysqli_stmt_init()的程序,它确实需要一个参数,我认为phpstorm 在这种情况下确实报告了一个不正确的警告。如果您查看文档:php.net/manual/en/mysqli.stmt-init.php,您将看到面向对象的对应部分根本不接受任何参数。因此,如果您确实写了类似$connect->stmt_init($connect);的内容,那么警告将是有效的。