php 注意,sql 和 isset()
php notice, sql and isset()
如何删除 sql 查询字符串中的 apache/php 消息 "Notice: Undefined index":
使用@有效$query .= " hash = '" . @$_GET['key'] . "'";
但是对于 isset() 它不会:
$query .= " hash = '" . !isset($_GET['key']) . "'";
在 if 子句中:
使用@有效
if (@$_GET['action'] === "de") {
但是对于 isset() 它不会:
if (!isset($_GET['action']) === "de") {
感谢您的帮助
在这种情况下你可以做的是使用array_key_exists()
。只有在那之后检查值:
if (array_key_exists('action',$_GET) && $_GET['action'] === "de") {
...
}
这样,如果第一个失败,第二个就不会被检查,你也不会收到通知。
你应该永远不要在严肃的代码中使用@。
您应该尝试修复您的代码,而不是试图避免它。在尝试使用一个值之前,您应该始终检查它。即
if(!isset($_GET['key'])&&!empty($_GET['key'])){
return 'action isnt set!';
};
@运算符只是告诉解释器闭嘴并忽略不会使系统崩溃的错误。它给出了不稳定的代码,不应使用!
函数issetreturnstrue
或false
。您可以使用它来检查变量是否已声明并具有值。这是你应该如何使用它:
$query .= "hash = '" . ( isset($_GET['key']) ? $_GET['key'] : '' ) . "'";
这意味着如果已声明并具有值,则使用 $_GET['key']
,否则使用默认值 ('')。
有时,如果未提供任何内容,代码可以 运行 使用默认值。这是 isset() 的一种用法。
以上,我使用的是if ... else
的缩略版。下面两个语句是一样的:
// Short version ( TEST ? if TRUE : else FALSE )
$query = isset($_GET['key']) ? $_GET['key'] : '';
// Long version
if ( isset( $_GET['key'] ) )
$query = $_GET['key'];
else
$query = '';
如何删除 sql 查询字符串中的 apache/php 消息 "Notice: Undefined index":
使用@有效$query .= " hash = '" . @$_GET['key'] . "'";
但是对于 isset() 它不会:
$query .= " hash = '" . !isset($_GET['key']) . "'";
在 if 子句中:
使用@有效
if (@$_GET['action'] === "de") {
但是对于 isset() 它不会:
if (!isset($_GET['action']) === "de") {
感谢您的帮助
在这种情况下你可以做的是使用array_key_exists()
。只有在那之后检查值:
if (array_key_exists('action',$_GET) && $_GET['action'] === "de") {
...
}
这样,如果第一个失败,第二个就不会被检查,你也不会收到通知。
你应该永远不要在严肃的代码中使用@。
您应该尝试修复您的代码,而不是试图避免它。在尝试使用一个值之前,您应该始终检查它。即
if(!isset($_GET['key'])&&!empty($_GET['key'])){
return 'action isnt set!';
};
@运算符只是告诉解释器闭嘴并忽略不会使系统崩溃的错误。它给出了不稳定的代码,不应使用!
函数issetreturnstrue
或false
。您可以使用它来检查变量是否已声明并具有值。这是你应该如何使用它:
$query .= "hash = '" . ( isset($_GET['key']) ? $_GET['key'] : '' ) . "'";
这意味着如果已声明并具有值,则使用 $_GET['key']
,否则使用默认值 ('')。
有时,如果未提供任何内容,代码可以 运行 使用默认值。这是 isset() 的一种用法。
以上,我使用的是if ... else
的缩略版。下面两个语句是一样的:
// Short version ( TEST ? if TRUE : else FALSE )
$query = isset($_GET['key']) ? $_GET['key'] : '';
// Long version
if ( isset( $_GET['key'] ) )
$query = $_GET['key'];
else
$query = '';