![](/img/trans.png)
[英]Laravel SQLSTATE[HY093]: Invalid parameter number after change from php 7.4 to 8.0
[英]change PHP compatibility from 7.4 to 8.0
我有一個 php 腳本,需要使此代碼行與 php8.0 兼容:
if ((is_array($key) && is_array($value)) || (strlen($key) > 0 && strlen($value) > 0)) {
我不是程序員/編碼員。 我發現,第二部分( strlen($key) > 0 && strlen($value) > 0
)出錯了。 因為我在應用程序中收到此錯誤消息:
響應:{"result":null,"error":{"code":0,"message":"strlen (): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given ","data":"Exception 'TypeError' (Code: 0) with message ' strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given ' in C:\xampp \htdocs\mod2060\jtlconnector\vendor\jtl\connector\src\Core\Database\Mysql.php:567 "},"jtlrpc":"2.0","id":"unknown"} 異常 bei category.push: strlen (): 參數 #1 ($string) 必須是字符串類型,jtl\Connector\Model\Identity 給定
我剛剛將 PHP 版本從 7.45 更改為 8.00 並收到錯誤。 如果我 go 回到 PHP 7.45 它又可以正常工作了。
拋出此錯誤是因為$key
或$value
是 object 而不是字符串 - 錯誤消息表明它是類型為“jtl\Connector\Model\Identity”的 object。 因此,您需要修改該庫並在其中為 class 創建一個__toString
魔術方法function,它定義了如何將 object 轉換為字符串,或者您可能想要執行is_object
檢查而不是(或之前)使用strlen
.
1 https://www.php.net/manual/en/language.oop5.magic.php#object.tostring
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.