PHPとMySQLのクエリ構築は初めてです。昨日、列について同様の質問をしましたが、VALUESについてサポートが必要です。私は大きなフォーム用のプロセッサを持っています。いくつかのフィールドは必須ですが、ほとんどのフィールドはユーザーオプションです。私の場合、HTMLIDとMySQL列名は同じです。配列を使用して$_POSTをINSERTINTOのフィールドと値に変換する方法についてのチュートリアルを見つけましたが、何時間も経っても機能させることができません。配列と変数を使用して非常に単純なINSERTを作成するために一歩下がったが、それでも困惑している。次の行が機能し、5つの変数の値を100を超える列を持つデータベースに挿入します。最初の4つの項目は文字列、5番目の項目、monthlyRentalは整数です。
$colsx = array('country', 'stateProvince', 'city3', 'city3Geocode', 'monthlyRental');
$col_string = implode(',', $colsx);
$query = "INSERT INTO `$table` ($col_string) VALUES ( '$country', '$stateProvince', '$city3', '$city3Geocode', '$monthlyRental')";
この考えに従って、前処理された変数を使用して配列を作成し、それを内包して文字列を作成します。
//these variables are "pre-processed", e.g., $country=$_POST['country'] and validated, but not yet mysql_real_escape_string
$valsx = array( '$country', '$stateProvince', '$city3', '$city3Geocode', '$monthlyRental' );
$val_string = implode(",", $valsx);
$query = "INSERT INTO `$table` ($col_string) VALUES ( $val_string )";
それは動作しません。多くのことを変更しようとしましたが、結果はありませんでした。このコードで発生するMySQLエラーは次のとおりです-'フィールドリスト'の不明な列'$country'$valsx配列の'$country'を参照していますが、これがフィールドリストであるかわかりません。問題を解決する方法。
提案を具体的に記入してください。私はMySQLとPHPにかなり慣れていません。
OK、Iserniの提案で、これが現在のコードです。実行されません。彼のコードについて助けが必要であり、エラーメッセージをどこにどのように配置するかについて助けが必要です。
$colsx = $fields = $valsx = $values = array();
$colsx = array('country', 'stateProvince', 'city3', 'city3Geocode', 'monthlyRental');
$col_string = implode(',', $colsx);
$valsx = array( "$country", "$stateProvince", "$city3", "$city3Geocode", "$monthlyRental" );
$val_string = implode(",", $valsx);
foreach($colsx as $col) {
$fields[] = $col;
if ( is_numeric($_POST[$col]) ) {
$values[] = mysql_real_escape_string($_POST[$col]);
}else{
$values[] = "'".mysql_real_escape_string($_POST[$col])."'";
}
}
$fields_sql = implode(',', $fields);
$values_sql = implode(',', $values);
$query = "INSERT INTO `$table` ($fields_sql) VALUES ($values_sql);"
if (!mysql_query($query,$conn))
{
die('<li class=error>an error occurred posting to the database. </li>'. mysql_error());
}