私が知りたかったのはで、データが存在する場合はmysql update query elseデータをmysqlテーブルに挿入する必要があります。データが存在する場合は更新クエリを実行する方法、それ以外の場合はデータをMysqlに挿入する方法はありますか?
私が行ったことは、fgetcsv()機能を使用して.csvファイルからmysqlにデータをフェッチしています。 次に、csv &から各行を読み、これらの4つの値を4つの変数&に入れ、更新クエリを実行します。 なので、データが存在しない場合でも、更新クエリが機能している(0行が正常に更新された)ので、そのデータを識別するにはどうすればいいですか?& 作業。
product_entity_priceテーブルにデータを更新または挿入したいとします。 マイscript-:
if(($handle = fopen("/data/sample/items_0420.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 8000, ",")) !== FALSE)
{
$num = count($data);
for ($c=0; $c < $num; $c++)
{
$temp = $data;
$string = implode(";", $temp);
}
$pieces = explode(";", $string);
$col1 = $pieces[0];
$col2 = $pieces[1];
$col3 = $pieces[2];
$col4 = $pieces[3];
$query_insert = "INSERT INTO import_prices (customer_id, sku, price, website) ".
"VALUES($col1,'$col2',$col3,'$col4') ".
"ON DUPLICATE KEY UPDATE customer_id=$col1, price=$col3,website='$col4' ";
$result = mysql_query($query_insert);
$query_update = "UPDATE product_entity_price pep
JOIN catalog_product cp ON cp.entity_id = pep.entity_id
AND cp.sku LIKE '$col2' AND website_id = $col4
JOIN customer_group cg ON cg.customer_group_id = pep.customer_group_id AND cg.customer_group_code = $col1
SET cpetp.value = ".$col3.";";
mysql_query($query_update);
}
}
'INSERT INTO ... ON DUPLICATE KEY UPDATE'はすでにそれを行うべきです。エラーはありますか? – CodeCaster
あなたの 'import_prices'テーブルにユニークなキーがありますか? – Travesty3
HI CodeCaster、INSERT INTO ... INSERT INTO ...重複しているKEY UPDATEはうまくいきます...しかし、別のテーブルproduct_entity_priceに更新または挿入したい...&ユニークキーまたはプライマリキーのような制約で重複キー更新を使用します。 .. product_entity_priceにはユニークなキーはありません... – Prat