php致命错误:函数名必须是一个字符串

时间:2012-07-29 04:00:56

标签: php

致命错误:函数名称必须是第3行/home/../public_html/updater.php中的字符串

 1: <?php
 2:    
 3: $user_id = $_GET("uid"); /* <-- Line 3 */
 4: $user_name = $_GET("uname");
 5: $setting = $_GET("setting");
 6:    
 7: $MyString = $user_name + '[' + $user_id + ']{' + $setting + '} \n';
 8:    
 9: $myfile = fopen('database.txt', 'a');
10: fwrite($myfile, $MyString . '\n');
11: fclose($myfile);
12:    
13: ?>

有什么问题?

7 个答案:

答案 0 :(得分:23)

使用方括号将$_GET()代码更改为$_GET[]

答案 1 :(得分:5)

除了使用方括号而不是括号外,还应将第7行更改为

$MyString = $user_name . "[" . $user_id . "]{" . $setting . "} \n";

和第10行到

fwrite($myfile, $MyString . "\n");

您应该使用句点(。)进行字符串连接而不是加号(+)。此外,在编写特殊字符(换行符)时,您需要使用双引号字符串而不是单引号。

答案 2 :(得分:3)

要在php中获取array值,请使用方括号[]而不是vb,即$user_id = $_GET["uid"];

答案 3 :(得分:2)

语法错误。正确的语法是:

$user_id = $_GET["uid"];

在适用的地方应用更改。

答案 4 :(得分:1)

对您使用两个换行符的原因感到困惑。一个人不应该够吗?

你的代码也错了'\ n',你做不到。

你需要;

“\ n”正确解释的隐式换行符(或chr(10))

CRLF(chr(13)+ chr(10)),用于DOS格式的文本文件。

CR用于linux格式的文本文件。 (或chr(13))


另外,我建议使用“ta”进行fopen调用。从fopen()php页面拉出来;

如果您使用纯文本文件并且使用\ n来界定脚本中的行结尾,则应使用't'模式,但希望您的文件可以通过记事本等应用程序读取。你应该在所有其他情况下使用'b'。

参考文献:

http://php.net/manual/en/function.fopen.php

http://www.december.com/html/spec/ascii.html(13被视为回车或/ r,10被视为换行或/ n)

答案 5 :(得分:-1)

更改所有 GET 方法:

$user_id = $_GET("uid"); /* <-- Line 3 */

$user_id = $_GET["uid"];

完成

答案 6 :(得分:-1)

我希望你已经解决了这些问题。您必须从“括号”更改为“方括号”。在从输入中提取它们的同时修剪它们是最佳做法。

$user_id = trim($_GET["uid"]); /* <-- Line 3 */
$user_name = trim($_GET["uname"]);
$setting = trim($_GET["setting"]);

祝你好运!