PDOException - SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'MyDataValue'

时间:2013-10-28 11:24:29

标签: php mysql pdo

首先,我在Stack Overflow上的很多地方都看过这个,但我仍然无法让这个错误消失。有关此特定问题的一些信息如下:

下面的代码是我用来创建表的MySQL代码(我要插入特定记录的地方):

CREATE  TABLE IF NOT EXISTS `energymeter`.`Node` (
  `node_id` INT NOT NULL AUTO_INCREMENT ,
  `node_name` VARCHAR(7) NOT NULL ,
  PRIMARY KEY (`node_id`) ,
  UNIQUE INDEX `node_name_UNIQUE` (`node_name` ASC) )
ENGINE = InnoDB;

以下代码似乎失败了(导致线程标题中给出错误):

$node_name_value = $line_of_text[2]; // In this example, the value would be 'MyDataValue'
$insert_demand_record = $conn->prepare("INSERT INTO Demand (date, time, trading_period, demand_value, Node_node_id) VALUES (STR_TO_DATE('$date', '%d %M %Y'), STR_TO_DATE('$time', '%k:%i:%s'), $trading_period, $demand_value, (SELECT Node.node_id FROM Node WHERE Node.node_name = $node_name_value))");
$insert_demand_record->execute();
编辑:进一步测试后,更改上面的代码不起作用,但是如果我改变下面的代码(改变'$ node_name_value值),我看到浏览器中的值发生了变化(例如,如果我设置了$ node_name_value为'SomeRandomValue',错误类似'未知列'SomeRandomValue'......

//Ignoring items of same name that already exist (since there is a UNIQUE constraint
//on the 'node_name' column.
$insert_stmt = $conn->prepare('INSERT IGNORE INTO Node(node_name) VALUES(:node_value)');

//Bind the node name with the query
$node_name_value = $line_of_text[2];
$insert_stmt->bindParam(':node_value', $node_name_value);

//Execute PDO insert statement
$insert_stmt->execute();

如果有人能帮助我解决这个问题,那将非常感激!

1 个答案:

答案 0 :(得分:-1)

以下代码设法使我的工作正常...

$insert_demand_record = $conn->prepare("INSERT INTO Demand (date, time, trading_period, demand_value, Node_node_id) VALUES (STR_TO_DATE('$date', '%d %M %Y'), STR_TO_DATE('$time', '%k:%i:%s'), $trading_period, $demand_value, (SELECT Node.node_id FROM Node WHERE Node.node_name = :node_name_value))");

$insert_demand_record->bindValue(':node_name_value', $node_name_value, PDO::PARAM_STR);
$insert_demand_record->execute();

感谢用户'Burhan Khalid'建议编辑 - 现在将更多地使用准备好的陈述......