亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

語法錯誤。(綁定值?

語法錯誤。(綁定值?

PHP
蝴蝶刀刀 2022-09-17 21:30:54
我正在嘗試創建一個更新查詢,并且我正在將一些設置的內容循環到一個名為$str的var中,我似乎無法使其正常工作。       if (is_numeric($id)) {           if (!empty($values) && !empty($table_name)) {               $str = '';               $sql = "UPDATE `$table_name` SET :update_values WHERE `$column_name` = :id";               // Its one because we dont use ID like that               $i = 1;               foreach ($values as $key => $value) {                   if ($key != $column_name) {                       // Exclude the last one from having a comma at the end                       if ($i == count($values) - 1) {                           $str .= "$key='" . $value . "'";                       } else {                           $str .= "$key='" . $value . "', ";                           $i++;                       }                   }               }               $query = $this->dbh->prepare($sql);               $query->bindValue('update_values', $str, PDO::PARAM_STR);               $query->bindValue(':id', $id, PDO::PARAM_INT);               $query->execute();               return true;             } else {               return false;           }       } else{           return false;       }   }輸出:致命錯誤: 未捕獲的 PDO異常: SQLSTATE[42000]: 語法錯誤或訪問沖突: 1064 您的 SQL 語法中存在錯誤;檢查與您的 MariaDB 服務器版本對應的手冊,了解在第 1 行note_name=\'yeet'附近使用的正確語法,note_date=\'2020-02-20\',note_desc=\'asdasdadsdadsdasdad我是否犯了任何明顯的錯誤?同樣,對于我的生活,我不知道值前面的反斜杠是什么意思。
查看完整描述

1 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

在MySQL中,標識符不能作為值提供。


對列的引用必須出現在 SQL 語句的文本中,它們不能通過綁定參數提供。這適用于表名、列名、函數名。


沒有解決方法;這是一個設計限制。這有幾個原因。最直接的原因之一是了解SQL語句的準備方式,提出執行計劃所需的信息,表和列必須在準備時知道(用于語義檢查和特權檢查)。實際值可以推遲到執行時間。


綁定占位符用于提供值,而不是標識符。


通過給定的代碼,MySQL看到的是沿著以下路線的東西


 UPDATE `mytable` SET 'a string value' WHERE `id_col` = 42

而我的學習進度正在猶豫不決。'a string value'


我們可以(也應該)對值使用綁定參數。


我們可以動態生成如下所示的 SQL 文本:


    UPDATE `mytable`

       SET `col_one` = :val1

         , `col_two` = :val2

     WHERE `id_col` = :id 

在將SQL文本準備到語句中后,我們可以綁定值:


         $sth->bindValue(':val1', $value_one , PDO::PARAM_STR );

         $sth->bindValue(':val2', $value_two , PDO::PARAM_STR );

         $sth->bindValue(':id'  , $id        , PDO::PARAM_INT );

然后執行


查看完整回答
反對 回復 2022-09-17
  • 1 回答
  • 0 關注
  • 99 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號