php注意事项、sql和isset()
如何消除sql查询字符串中的apache/php消息“注意:未定义索引”: 使用@it worksphp注意事项、sql和isset(),php,sql,notice,Php,Sql,Notice,如何消除sql查询字符串中的apache/php消息“注意:未定义索引”: 使用@it works$query.=“哈希=”@$_获取['key']。"'"; 但对于isset(),它不会: $query.=“哈希=”!isset($\u GET['key'])。"'"; 在if条款中: 使用@it是有效的 if(@$\u GET['action']==“de”){ 但对于isset(),它不会: if(!isset($\u GET['action'])==“de”){ 感谢您的帮助在这种情况下
$query.=“哈希=”@$_获取['key']。"'";代码>
但对于isset(),它不会:
$query.=“哈希=”!isset($\u GET['key'])。"'";代码>
在if条款中:
使用@it是有效的
if(@$\u GET['action']==“de”){
但对于isset(),它不会:
if(!isset($\u GET['action'])==“de”){
感谢您的帮助在这种情况下,您能做的就是使用。只有在使用之后,才检查值:
if (array_key_exists('action',$_GET) && $_GET['action'] === "de") {
...
}
这样,如果第一个失败,第二个就不会被检查,你也不会得到通知
您应该不要在严重的代码中使用@。您应该尝试修复代码,而不是试图避免它。在尝试使用它之前,您应该始终检查值。即
if(!isset($_GET['key'])&&!empty($_GET['key'])){
return 'action isnt set!';
};
@operator只是告诉解释器闭嘴,忽略不会使系统崩溃的错误。它给出的代码不稳定,不应该使用
函数返回true
或false
。您可以使用它来检查变量是否已声明并具有值。以下是您应该如何使用它:
$query .= "hash = '" . ( isset($_GET['key']) ? $_GET['key'] : '' ) . "'";
这意味着使用$\u 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 = '';
与其试图消除该消息,不如尝试修复该问题:yi:isset
return boolean,如果不按照Andrius在下面所说的做,就无法检查该消息是否已设置并包含“de”。这里的回答很好,非常有用,并且正在进行良好的练习,我非常喜欢这个问题!各位,你们非常棒,响应速度非常快,谢谢。你们永远不要使用@在严肃的代码中。这就是我问的原因。@使代码看起来既快又脏。在问题中,OP使用如果(!isset($\u GET['action']==“de”)
,您的版本将不完整OP@SamSwift웃, 我只是泛泛而谈,对于这类问题没有具体的答案。甚至一个都没有。感谢所有的评论和建议。我现在明白应该如何使用它了。