2014-03-13 7 views
5

Ich habe diese Funktion:Argument 1 bis myFunction() übergeben muss eine Instanz von String, String angegeben, genannt werden in

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); 
} 

und die Form i verwenden:

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

Aber wenn ich tu dies, ich habe diesen Fehler:

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:... 

Ich habe diesen Fehler mit dem Int-Problem. Wie kann ich es lösen?

+1

Sie nicht brauchen, datatype Zeichenfolge in php in Ihrer Funktion –

+6

Type Hinting zu verwenden, ist nicht für primitive Typen, ist PHP für eine Suche String-Klasse, die nicht existiert. Entfernen Sie diesen Typ Hinweis: myFunction ($ name) { – Steve

+0

Können Sie uns den Code zeigen, wo Sie die von Ihnen definierte Funktion aufrufen? – Lapidouce

Antwort

2

Versuchen Sie, den primitiven Datentyp aus der Funktionsdeklaration zu entfernen. PHP benötigt keine Typhinweise für primitive Datentypen.

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); 
} 
0

Wenn Sie nicht möchten, einen Code-Block tun Art am Anfang jeder Funktion zu überprüfen, suchen Sie schreiben, wie folgt aus:

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

    ... 
} 

Sie können einen Fehlerbehandler registrieren die gegebene Vergleich Tippen Sie mit Ihrem Hinweis und wenn zum Beispiel string==string Sie den Fehler ignorieren können.

Siehe Benutzer Hinweise zum Handbuch Seite für einige Beispiele

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

Verwandte Themen