次の foreach ループを使用して SQL クエリを作成しています。
$sql = "UPDATE table01 SET ";
foreach(array_combine($values, $variables) as $value=>$variable)
{
$sql .="$value = $variable,";
}
$sql = rtrim($sql,',');
$sql .=" WHERE id = '$id'";
$values は更新されるフィールド タイトルの配列 (db の列ヘッダー) であり、$variables はデータを含む変数の配列です。
このようなループによって作成されたクエリの例を次に示します。
UPDATE table01
SET sv_21 = 123, sv_22 = 123, sv_23 = 2011, sv_I8 = 1 sachet every day, sv_I9 = 3
WHERE id = '001'
の SQL は「毎日」を構文として認識し、更新コマンドを壊します。
このデータを に入力するにはどうすればよいですか? 実際には、これらのクエリは通常、はるかに大きく、いくつかの文字列によって構文エラーが発生します。
ご検討いただきありがとうございます
関連する場合、UPDATE の実行に使用している PDO は次のとおりです。
try
{
$pdo = new PDO('mysql:host=localhost; dbname=tables', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare($sql);
$stmt->execute();
# Affected Rows?
echo $stmt->rowCount(); // 1
}