私はSQLとPHPが初めてです。これまでのところ、問題を解決できましたが、PREPARE ステートメントで構文の問題が発生しています (1 つのステップで複数のことを実行しようとしている可能性があります)。誰かが私の構文が台無しになっている場所を教えてくれたら、それは素晴らしいことです.
さらに、私が書いているコードはサーバー上の保存ファイルを更新しようとしています。準備ステートメントでそれを行うことが正しい方法であると信じていますが、そうでない場合は喜んでお知らせします。注INSERT INTO -> 条件付き挿入または更新を変更する予定です。
予期しない T_STRING というエラーが表示されます。コードでエラーの行をマークしました。
$sql='PREPARE statement FROM "INSERT INTO buildings VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) WHERE id="$id" AND ind="$i""';
$result=mysql_query($sql);
for($i=0;$i<1600;$i+=1){
if(isset($_POST['ind'.$i])){
$bind=$_POST['bind'.$i];
$time=$_POST['time'.$i];
$level=$_POST['level'.$i];
$p1ind=$_POST['p1ind'.$i];
$p1state=$_POST['p1state'.$i];
$p1time=$_POST['p1time'.$i];
$p2ind=$_POST['p2ind'.$i];
$p2state=$_POST['p2state'.$i];
$p2time=$_POST['p2time'.$i];
$p3ind=$_POST['p3ind'.$i];
$p3state=$_POST['p3state'.$i];
$p3time=$_POST['p3time'.$i];
$p4ind=$_POST['p4ind'.$i];
$p4state=$_POST['p4state'.$i];
$p4time=$_POST['p4time'.$i];
$p5ind=$_POST['p5ind'.$i];
$p5state=$_POST['p5state'.$i];
$p5time=$_POST['p5time'.$i];
$sql = 'SET @bind="$bind",'. //<-line of error
'@time="$time",'.
'@level="$level",'.
'@p1ind="$p1ind",'.
'@p1state="$p1state",'.
'@p1time="$p1time",'.
'@p2ind="$p2ind",'.
'@p2state="$p2state",'.
'@p2time="$p2time",'.
'@p3ind="$p3ind",'.
'@p3state="$p3state",'.
'@p3time="$p3time",'.
'@p4ind="$p4ind",'.
'@p4state="$p4state",'.
'@p4time="$p4time",'.
'@p5ind="$p5ind",'.
'@p5state="$p5state",'.
'@p5time="$p5time",'.
'@id="$id",'.
'@ind="$i"';
$result=mysql_query($sql);
$sql='EXECUTE statement USING @id,@time,@level,@p1ind,@p1state,@p1time,@p2ind,@p2state,@p2time,@p3ind,@p3state,@p3time,@p4ind,@p4state,@p4time,
@p5ind,@p5state,@p5time,@ind,@bind';
$result=mysql_query($sql);
if(!$result){
die("saveArry[0]=".mysql_error().";");
}else{
die("saveArry[0]='saved';");
}
}
}
$sql='DEALLOCA PREPARE statement';
$result=mysql_query($sql);
更新ホスト サーバーに PDO をインストールできないため、残念ながら PDO は受け入れられないソリューションです。私の答え(今ではエラーはありません!):
if(isset($_POST['ind'])){
$ind=sanitizeString($_POST['ind']);
$bind=sanitizeString($_POST['bind']);
$time=sanitizeString($_POST['time']);
$level=sanitizeString($_POST['level']);
$p1ind=sanitizeString($_POST['p1ind']);
$p1state=sanitizeString($_POST['p1state']);
$p1time=sanitizeString($_POST['p1time']);
$p2ind=sanitizeString($_POST['p2ind']);
$p2state=sanitizeString($_POST['p2state']);
$p2time=sanitizeString($_POST['p2time']);
$p3ind=sanitizeString($_POST['p3ind']);
$p3state=sanitizeString($_POST['p3state']);
$p3time=sanitizeString($_POST['p3time']);
$p4ind=sanitizeString($_POST['p4ind']);
$p4state=sanitizeString($_POST['p4state']);
$p4time=sanitizeString($_POST['p4time']);
$p5ind=sanitizeString($_POST['p5ind']);
$p5state=sanitizeString($_POST['p5state']);
$p5time=sanitizeString($_POST['p5time']);
$rot=sanitizeString($_POST['rot']);
$sql="INSERT INTO buildings (id,ind,bind,time,level,p1ind,p1state,p1time,p2ind,p2state,p2time,p3ind,p3state,p3time,p4ind,p4state,p4time,p5ind,
p5state,p5time,rot) VALUES ('$id','$ind','$bind','$time','$level','$p1ind','$p1state','$p1time','$p2ind','$p2state','$p2time','$p3ind','$p3state',
'$p3time','$p4ind','$p4state','$p4time','$p5ind','$p5state','$p5time','$rot') ON DUPLICATE KEY UPDATE bind='$bind',time='$time',level='$level',
p1ind='$p1ind',p1state='$p1state',p1time='$p1time',p2ind='$p2ind',p2state='$p2state',p2time='$p2time',p3ind='$p3ind',p3state='$p3state',
p3time='$p3time',p4ind='$p4ind',p4state='$p4state',p4time='$p4time',p5ind='$p5ind',p5state='$p5state',p5time='$p5time',rot='$rot'";
$result=mysql_query($sql);
if(!$result){
die("saveArry[0]=".mysql_error().";");
}else{
die("saveArry[0]=saved;");
}
}