2017-08-10 25 views
0

列q1とq2、q3、q4、q5、...を含む表があります。列名は文字qと数字i、i + 1、i + 2、i + 3、... foreachループの内側では、配列をループして、各配列要素を1つの列に追加したい。例えばARR = [A、B、C、D] Aは第1四半期に行く、BがQ2に行く..ここ は私の試みです:SQL文内の列名の数値の増分

$selected_ans = $_POST['options']; 
$answersArr = implode(' ', $selected_ans); 
foreach ($answersArr as $ans) { 
    // column name consisting of letter q and a numeric value 
    $int = "q"+1; 
    $sql = "INSERT INTO MyGuests ($int)VALUES ($ans) WHERE username = $VALID_USER"; 
    $conn->query($sql); 
    // increment the numeric value 
    $int++; 
} 

これがそうか、これは正しく実装することができます動作しませんか?ありがとうございます

+0

破は、私はあなたが –

+1

$ int型=「Q」+1を爆発使用する必要があると思うのforeachを使用して何の使用はありませんので、配列の要素を結合するために起こっています。 $ int = "q" + $ intでなければなりません。そして最初は$ int値は1 –

+0

です。@vSugumarはコメントのおかげで、配列に要素を正しく追加するにはどうしたらいいですか? – jimiss

答えて

-1

私はこれがあなたが探しているものに近いと思います。それは少しばかりですが、それは仕事を完了させ、あなたがリファクタリングし改善するための良い出発点です。

$selected_ans = $_POST['options']; 
// Make sure to sanitize the raw input 
foreach ($selected_ans as $k => $v) { 
    $selected_ans[$k] = '"' . mysqli_real_escape_string($v) . '"'; 
} 
// Dynamically create a list of column names 
$columns = []; 
for ($i = 1; $i <= count($selected_ans); $i++) { 
    array_push($columns, 'q' . $i); 
} 
$sql = "INSERT INTO MyGuests (username, " . implode(", ", $columns) . ") VALUES (\"" . mysqli_real_escape_string($VALID_USER) . "\", " . implode(", ", $selected_ans) . ")"; 
$conn->query($sql);