【问题标题】:Argument 1 passed to myFunction() must be an instance of string, string given, called in传递给 myFunction() 的参数 1 必须是字符串的实例,给定的字符串,调用
【发布时间】:2014-04-18 13:00:11
【问题描述】:

我有这个功能:

function myFunction(string $name) {
    $db = mysql_connect("localhost", "root", "");
    mysql_select_db(...); 

    $insertplayer="INSERT INTO `...`(....)
    VALUES (......')";
    if (!mysql_query($insertplayer,$db))
      {
      die('Error: ' . mysql_error());
      }
    $id = mysql_insert_id();
    echo 'done for player N°'.$id;
    mysql_close($db);
}

以及我使用的形式:

<form action="insertplayer.php" method="post">
    <input type="text" name="nameplayer" />
    <input type="submit" value="ok" />
</form>

但是当我这样做时,我有这个错误:

Catchable fatal error: Argument 1 passed to myFunction() must be an instance of string, string given, called in C:.... on line 23 and defined in C:...

我有这个 int 问题的错误。我该如何解决?

【问题讨论】:

标签: php string function arguments instance


【解决方案1】:

尝试从函数声明中删除原始数据类型。 PHP 不需要原始数据类型的类型提示。

function myFunction($name) {
    $db = mysql_connect("localhost", "root", "");
    mysql_select_db(...); 

    $insertplayer="INSERT INTO `...`(....)
    VALUES (......')";
    if (!mysql_query($insertplayer,$db))
      {
      die('Error: ' . mysql_error());
      }
    $id = mysql_insert_id();
    echo 'done for player N°'.$id;
    mysql_close($db);
}

【讨论】:

    【解决方案2】:

    如果您不想在编写的每个函数的开头编写代码块来检查类型,如下所示:

    function myFunction($myScalar) {
        if (!is_string($myScalar)) {
            throw new Exception(...);
        }
    
        ...
    }
    

    您可以注册一个错误处理程序,将给定类型与您的提示进行比较,例如string==string 您可以忽略该错误。

    有关示例,请参阅手册页上的用户说明

    http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 2020-07-14
      相关资源
      最近更新 更多