【发布时间】:2018-11-05 00:50:56
【问题描述】:
我对 MySQL 比较陌生,我正在尝试结合我在其他地方看到的插入和更新语句。对于以下代码,
$query = "this is not the problem";
$ora_stmt = oci_parse($conn, $query);
$result = oci_execute($ora_stmt);
$stmt1 = $mysqli1->prepare("INSERT INTO na_dslam_card (n_alias, shelf_pt_num, card_pt_num, card_pt_description)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE n_alias=?, shelf_pt_num=?, card_pt_num=?, card_pt_description=?");
while($row = oci_fetch_array($ora_stmt, OCI_ASSOC+OCI_RETURN_NULLS)) {
print $row['DSLAM'] . "," . $row['MODEL'] . "," . $row['VENDOR'] . "," . $row['BROADBAND_CIRCUIT_ID'] . "," . $row['SVC_N'] . "," . $row['PORT_ADDR_STATUS']. "," . $row['BROADBAND_CIRCUIT_ID'] . "," . $row['RACK'] . "," . $row['SHELF'] . "," . $row['SLOT'] . "," . $row['PORT'] . "," . $row['SHELF_PT_NUMBER'] . "," . $row['CARD_PT_NUMBER'] . "," . $row['CARD_PT_DESCRIPTION'] . "\n";
$stmt1->bind_param("ssss", $row['DSLAM'],$row['SHELF_PT_NUMBER'],$row['CARD_PT_NUMBER'],$row['CARD_PT_DESCRIPTION']);
if(!$stmt1->execute())
{
$tempErr = "Error setting card info: " . $stmt1->error;
printf($tempErr . "\n"); //show mysql execute error if exists
$err->logThis($tempErr);
}
} //while
我收到此错误消息:
错误设置卡信息:没有为准备好的参数提供数据 声明
我使用了 bind_parameters,所以不应该说我没有提供参数数据。我知道 rack 有时可以为空,但在这种情况下它不会将其设置为空吗?我知道 oracle 查询有效,因为 print 语句显示了这一点:
CNVLDAT00,TA12,Ad,196,641,服务中,196,,2,,7,117,115,11L5
那么为什么没有正确提供参数?我觉得没问题。
我查看了insert values,我认为我做得很好。
我的桌子是这样的:
na_dslam_card: 指数 n_alias 货架_pt_num card_pt_num card_pt_description
感谢您的帮助...
【问题讨论】:
标签: php mysql insert insert-update