加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 为什么sql给我错误“无效参数号:参数未定义”

发布时间:2020-12-13 14:13:51 所属栏目:PHP教程 来源:网络整理
导读:今天我得到错误无效的参数号:参数在我的yii应用程序更新数据时没有定义.那么我来知道我的sql数据库表列包含名称与“ – ”符号,即“表格”等. 然后我用“_”改变了“ – ”,一切正常. 这是查询代码段(我用“_”替换了“ – ”) /* percentage losses senser
今天我得到错误无效的参数号:参数在我的yii应用程序更新数据时没有定义.那么我来知道我的sql数据库表列包含名称与“ – ”符号,即“表格”等.

然后我用“_”改变了“ – ”,一切正常.

这是查询代码段(我用“_”替换了“ – ”)

/* percentage  losses  senser*/
    $attributes['totlcommloss_sensor']  = $_POST['totlcommloss_sensor'];
    $attributes['asp_hour_sensor']= $_POST['asp-hour_sensor'];
    $attributes['asp_daily_sensor'] = $_POST['asp-daily_sensor'];
    $attributes['asp_weekly_sensor']= $_POST['asp-weekly_sensor'];
    $attributes['asp_monthly_sensor'] = $_POST['asp-monthly_sensor'];
    $attributes['asp_5_day_senser']= $_POST['asp_5_day_senser'];

    /* cost losses */
    //$attributes['costlosshourly'] = $_POST['acs-hourly'];

    if (0 != intval($user['id'])) {         
        $command->update('alarm_settings',$attributes,'id=:id',array(':id' => intval($user['id'])));
            } 
    else {
        $NumberOfRowsEffected = $command->insert('alarm_settings',$attributes);
         }

有人可以解释为什么这个例子显示错误?提前谢谢了.

在您的情况下,表名中的“ – ”将被视为计算,而不是实际表名称的一部分.原因之一是MySQL只能为角色/单词赋予一个功能,并且不知道您在查询中的特定位置实际想要使用哪一个.

在MySQL中存在很多这些特殊字符或保留字.每次使用其中之一时,必须使用反引号.

反向标签将用于表和列标识符,但仅当标识符为MySQL reserved keyword时,或标识符包含超出限定集合的空格字符或字符时才需要(见下文)通常建议避免使用保留关键字作为列或表标识符,避免引用问题.

According to MySQL documentation,您不需要使用以下字符集引用(反引号)标识符:

ASCII: [0-9,a-z,A-Z$_] (basic Latin letters,digits 0-9,dollar,underscore)

您可以使用超出该集合的字符串作为表或列标识符,例如,包括空格,但是您必须引用(反引号)它们.

在你的情况下使用`table-post`(反引号!)而不是table-post应该工作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读