首先,我在 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();
如果有人可以帮助我解决这个问题,那将不胜感激!