我有这个功能:
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问题有这个错误。我怎么解决呢?
答案 0 :(得分:2)
尝试从函数声明中删除原始数据类型。 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);
}
答案 1 :(得分:0)
如果您不想在每个函数的开头执行一个代码块来检查类型,那么就像这样:
function myFunction($myScalar) {
if (!is_string($myScalar)) {
throw new Exception(...);
}
...
}
您可以注册一个错误处理程序,将给定类型与您的提示进行比较,例如string==string
您可以忽略该错误。
有关示例,请参阅手册页上的用户注释
http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration