Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in ...
以下のPHPコードを実行すると上記のエラーが出ました。2番目の引数が変数ではないということでしょうか?あと、ブラウザに以下が表示されましたが、データベースの価格は更新されませんでした。 csvには16行のcodeに対するpriceがあります。どなたかご教授宜しくお願い致します。
update tb_name set price=COALESCE(ELT(FIELD(code,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),price)Array ( [0] => iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii [1] => 1234565789 [2] => 987654321 [3] => 2468101214 [4] =>135791113...[16] => 999999999 //←ここまでcodeの配列//
//ここからpriceの配列//
[17] => 7,596 [18] => 1,430 [19] => 7,150 [20] => 2,520 [21] => 1,220 [22] => 6,100 [23] => 6,100 [24] => 1,660 [25] => 8,300 [26] => 4,530 [27] => 22,650 [28] => 22,650 [29] => 4,840 [30] => 7,930 [31] => 5,020 [32] => 25,100 )
code($row[0]) price($row[5]) 1234565789 7,596 987654321 1,430 2468101214 7,150 135791113 2,520 . . .
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[]=$row[5]; 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)*2)]; 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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/21 05:15
2017/06/21 05:17
2017/06/21 05:31
2017/06/21 05:47
2017/06/21 05:55
2017/06/21 06:04
2017/06/21 06:17
2017/06/23 13:06
2017/06/23 13:15 編集
2017/06/24 12:14
2017/06/24 12:21
2017/06/26 04:24
2017/06/27 13:04