以下のコードを実行すると表題のエラーメッセージが出ます。サイトによっては$paramsの前に'&'を加えるとのことですが他のエラーメッセージが出てしまいます。ちなみにcodeはアルファベット1文字を含む12ケタの数列、priceは4ケタの数列です。xxx.csvの中身は$row[0]はcodeに、$row[5]はpriceに対応しています。
ご教授のほどよろしくお願いいたします。
php
1<?php 2// mysqliクラスのオブジェクトを作成 3$mysqli = new mysqli('xxx', 'xxx', 'xxx', 'xxx'); 4if ($mysqli->connect_error) { 5 echo $mysqli->connect_error; 6 exit(); 7} else { 8 $mysqli->set_charset("utf8"); 9} 10 11$id=[]; 12$val=[]; 13if (($fp = fopen("xxx.csv", "r")) !== FALSE) { 14 while (($row = fgetcsv($fp, 1000, ",")) !== FALSE) { 15 $id[]=$row[0]; 16 $val[]=strval(str_replace(",","",$row[5]))+0; 17 } 18 fclose($fp); 19} 20$prepare_param=implode(",",array_fill(0,count($id),"?")); 21$sql ="update `tb_name` set `price`=COALESCE(ELT("; 22$sql.="FIELD(`code`,".$prepare_param.")"; 23$sql.=",".$prepare_param."),`price`)"; 24print $sql; 25 26$params=[str_repeat( 'i', count($id)).str_repeat( 'i', count($val))]; 27$params=array_merge($params,$id,$val); 28print_r($params); 29 30$stmt = $mysqli->prepare($sql); 31call_user_func_array([$stmt,"bind_param"], $params); 32$stmt->execute(); 33 34?> 35
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。