【问题标题】:Insert into a table which has a dash in the name插入名称中包含破折号的表中
【发布时间】:2012-05-15 18:54:18
【问题描述】:

我有一个名为concept-relation 的表,我想插入其中。

for ($i = 0; $i < count($sources); $i++) {
    $sourceID = $this->getConcpeptID($sources[$i]);
    $desID = $this->getConcpeptID($distinations[$i]);
    $query2 = "INSERT INTO concept-relation (relationID, firstConceptID, secondConceptID) VALUES (:rID, :sID, :dID)";
    $sth = $this->db->prepare($query2);
    $sth->execute(array(
        ':rID' => $relationID,
        ':sID' => $sourceID,
        'dID' => $desID
    ));
}

我收到此语法错误消息

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 C:\xampp\htdocs\Mar7ba\models\ontology_model.php 中的 '-relation (relationID, firstConceptID, secondConceptID) VALUES (' at line 1' 附近使用: 86 堆栈跟踪:#0 C:\xampp\htdocs\Mar7ba\models\ontology_model.php(86): PDOStatement->execute(Array) #1 C:\xampp\htdocs\Mar7ba\controlers\Ontology.php(69) : Ontology_Model->addRelation('jklljkljk', Array, Array) #2 C:\xampp\htdocs\Mar7ba\libs\Bookstrap.php(42): Ontology->relationAdd() #3 C:\xampp\htdocs\Mar7ba \index.php(13): Bootstrap->__construct() #4 {main} 在第 86 行的 C:\xampp\htdocs\Mar7ba\models\ontology_model.php 中抛出

我尝试直接从 MySQL 插入,得到的错误似乎是同样的错误

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '"-".relation (relationID, firstConceptID, secondConceptID) VALU' 附近使用正确的语法

问题是因为表名有破折号,看看MySQL是如何理解查询的

INSERT INTO concept - relation(
    relationID,
    firstConceptID,
    secondConceptID
)
VALUES ( 3, 3, 3 )

它只是理解概念并单独制造“-关系”,

感谢您的帮助,但不要更改我的表格名称:)

【问题讨论】:

  • 使用反引号不会改变你的表名,它只是转义表名。

标签: php mysql pdo mysql-error-1064


【解决方案1】:

用反引号括起来的标识符使保留字/字符成为mysql中的有效标识符。

所以你应该使用

 `concept-relation`

反引号 (`) 是此键盘左上角的键。

【讨论】:

  • 我怎样才能在概念之前找到那个字符?哪个键盘键?
  • 在英文键盘上按下1左边的键
【解决方案2】:
$query2 = "INSERT INTO `concept-relation` (relationID, firstConceptID, secondConceptID)
                VALUES (:rID, :sID, :dID)";

【讨论】:

  • 如果你的意思是 qoma ,就像这个 'concpet-relation' 所以它不起作用
  • 这不是 qoma - 它是一个反撇号(它位于键盘上 1 之前的数字行中)
  • 是的,它有效,非常感谢你,我会在 6 分钟后接受你的回答
【解决方案3】:

试试:

"INSERT INTO `concept-relation` (relationID, firstConceptID, secondConceptID) VALUES (:rID, :sID, :dID)";

【讨论】:

  • 概念之前的那个字符是什么?
【解决方案4】:

试试这个

$query2 = "INSERT INTO concept-relation (relationID, firstConceptID, secondConceptID)
                VALUES (:rID, :sID, :dID)";

【讨论】:

  • 同样的错误,还是一样
猜你喜欢
  • 2012-08-31
  • 2013-09-25
  • 2013-02-04
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
相关资源
最近更新 更多