2011-10-25 33 views
0

突然我的网站显示新的警告 -PHP:如何连接空字符串

相关的代码:

printf ("<input type='text' name='C_Comment' value='" . $myComment . "' >"); 

警告我得到:

  • 警告: printf()function.printf:参数太少

可能是因为$ myComment为空。

  1. 我知道我可以解决它,如果我第一次测试,如果值为空,并且只有然后concateate它。但有没有更简单的方法?

  2. 为什么我之前没有收到此警告?

感谢,

Atara

编辑:对不起,错题。问题是$ myComment不是NULL,它包含特殊字符。

+0

为什么“可能”?你不能用'isnull'测试这个吗? –

+0

“参数太少”意味着参数数量不符合要求。它与$ myComment中的内容无关。你为什么在这里使用printf? – lya

+0

看起来您应该使用'print'或'echo'而不是'printf'来代替 - 您没有提供带参数的格式字符串,只是一个字符串。 – DaveRandom

回答

6

不,你得到那个警告,因为你没有给printf足够的参数;大概$myComment包含像%s这样的printf占位符。

如果您不想使用printf的格式,请使用echo。您也可以重写你的printf电话:

printf ("<input type='text' name='C_Comment' value='%s'>", 
    $myComment); 

确保您在$myComment逃脱特殊字符(见htmlspecialchars)。

-1

的prinf调用之前添加这个,如果你有一个默认值(不为空):

$myComment = ($myComment == null) ? 'yourdefaultvalue' : $myComment; 

当然,回声会做精也(比空值是没有问题了) :

<input type="text" name="C_Comment" value="<?=myComment?>" /> 
+0

无论如何都没有任何影响。问题不是'NULL',而是'printf()'的错误使用 – DaveRandom

4

而不是使用printf只使用echo的:

echo "<input type='text' name='C_Comment' value='" . $myComment . "' >"; 
1

用printf来格式化给定值的字符串的函数。你只向函数提供了一个参数,所以它会把这个错误抛到你的脸上。

如果您只是希望在页面上打印文本,请使用echo(或仅删除f并使用print)与当前字符串。或者,你可以这样做:

printf("<input type='text' name='C_Comment' value='%s' />", $my_comment); 

Here's the PHP.net Docs page for printf(),你也可以在另请参见查看相关的功能部分。