gpt4 book ai didi

php - 插入mysql导致重复键

转载 作者:行者123 更新时间:2023-11-29 21:46:30 26 4
gpt4 key购买 nike

我尝试将一些数据插入数据库。首先我确保我确实有数据。我找不到数据未插入的原因。

echo 'os_id = ', $os_id, ' os_shoph = ', $os_shoph, ' os_shopd = ',  $os_shopd;

$insert = $db->prepare("INSERT `f2go`.`prints` ("
. "prt_os_id, prt_ts, prt_shoph, prt_shopd)"
. "VALUES (?, NOW(), ?, ? )");

$insert->bind_param('iss',
$os_id,
$os_shoph,
$os_shopd);

if($insert->execute()) {
echo '<h1>Print new order ', $os_id, '</h1>';
} else {
echo '<h1>Re-print order ', $os_id, '</h1>';
}
}

我添加了错误检查。

if (!($insert = $db->prepare("INSERT `f2go`.`prints` ("
. "prt_os_id, prt_ts, prt_shoph, prt_shopd)"
. "VALUES (?, NOW(), ?, ? )"))) {
echo "Prepare failed: (" . $db->errno . ") " . $db->error;
}
if (!$insert->bind_param("iss", $os_id, $os_shoph, $os_shopd)) {
echo "Binding parameters failed: (" . $insert->errno . ") " . $insert->error;
}
if (!$insert->execute()) {
echo "Execute failed: (" . $insert->errno . ") " . $insert->error;
}

结果是:

os_id = "206" os_shoph = 0228099392 os_shopd = example 
Re-print order "206"
Execute failed: (1062) Duplicate entry '0' for key 'prt_os_id'

数据库列 os_id 设置为“唯一”我不明白为什么 os_id=206 会被视为“0”

最佳答案

您在“prt_os_id”字段中插入“iss”值,它似乎是一个整数字段。这个错误 执行失败:(1062) key “prt_os_id”的重复条目“0”请参阅插入查询将“0”值放入键 prt_os_id 中,当这种情况发生两次时,会显示此错误,那么为什么插入“0”值呢?因为绑定(bind)中传递的第一个值是'iss'并且它是字符串值。应该是:

$insert->bind_param("1", $os_id, $os_shoph, $os_shopd))
$insert->bind_param("2", $os_id, $os_shoph, $os_shopd))
$insert->bind_param("3", $os_id, $os_shoph, $os_shopd))
$insert->bind_param("4", $os_id, $os_shoph, $os_shopd))

等等。

关于php - 插入mysql导致重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com