这是我想要做的.如果主键(entity_id)存在,我想插入此表或更新记录.我只是遇到了SQL语法的问题.它不会让我有比第一个'VALUES'更多的参数,所以我得到以下错误:
参数索引超出范围(7>参数个数,即6).
int insertOrUpdateSuccess = MyDBSyncher.UPDATE("INSERT INTO " + DB_NAME + ".entities " +
"(`entity_id`, `wai_type`, `wai_id`, `character_id`, `looted`, `creation_time`) " +
"VALUES ((?), (?), (?), (?), (?), (?)) " +
"ON DUPLICATE KEY UPDATE " +
"`wai_type`='(?)', `wai_id`='(?)', `character_id`='(?)', `looted`='(?)'",
new String[]{tmpEntityId, values[0], values[1], values[2], values[3], values[4],
values[0], values[1], values[2], values[3]});
Run Code Online (Sandbox Code Playgroud)
这有点像我想的那样,但我不能解释它的需要.很抱歉可能会发布重复内容.
哦,这是我的代码中的UPDATE()函数:
public static int UPDATE(String updateStatement, String[] params){
try {
if(!conn.isClosed()) {
logger.trace("Successfully connected to MySQL server using TCP/IP - " + conn);
stat = conn.prepareStatement(updateStatement); …Run Code Online (Sandbox Code Playgroud) 我完全不知道我的脚本有什么问题。JSON 数据正确输入,变量 $i 和 $current 在 forloop 的每个阶段都应该是它们。
它似乎一直在用 id 更新我的数据库,所以在 id 为 11 的情况下,它将用数字 11 更新所有列。
这是我的脚本:
if($mode == 'SAVE_BUYING_ROW')
{
$JSON = (array)$JSON ;
include('pdoconnect.php') ;
$result = $dbh->prepare("UPDATE parts_trading_instructions
SET quantity = ?, supplierRef = ?, currencyRef = ?,
net = ?, vat = ?, shippingNet = ?,
shippingVat = ?, direct = ?, ebayItemNumber = ?
WHERE id = ?") ;
$i = 0 ;
foreach($JSON as $current) {
$current = (string)$current ;
if($i == 0) …Run Code Online (Sandbox Code Playgroud)