簡體   English   中英

MySQL錯誤,“列數與第1行的值計數不匹配”

[英]MySQL error, “Column count doesn't match value count at row 1”

我正在使用PHP和MySQL進行測驗。 我給了用戶一些關於該問題的答案的選項,並且也放了單選按鈕。 現在我想將所選單選按鈕的值作為文本存儲到MySQL中。

    <?php
$connection = mysql_pconnect("localhost", "root", "") or die ("Error connection. ".mysql_error());
mysql_select_db("quiz", $connection) or die("Error selecting db. ".mysql_error());
    $query = "SELECT * FROM question ORDER BY RAND() LIMIT 0,1";
    $result = mysql_query($query) or die("Error processing query. ".mysql_error());
    echo "<form method = 'post' action = 'test5.php'>";
    echo "<table border = '1'>";
    while($data = mysql_fetch_array($result))
    {
            echo "".$data['Question']."<br>";
            echo "<input type = 'radio' name = 'radio' value='Opt1'>";
            echo "".$data['Option1']."<br>";
            echo "<input type = 'radio' name = 'radio' value='Opt2'>";
            echo "".$data['Option2']."<br>";
            echo "<input type = 'radio' name = 'radio'value='Opt3'>";
            echo "".$data['Option3']."<br>";
    }
    echo "<tr><td align = 'center'><input type = 'submit' name = 'go' value = 'GO'></td></tr>";
    echo "</table>";
    echo "</form>";
?>

提交表格如下:

    <?php
$connection = mysql_pconnect("localhost", "root", "") or die ("Error connection. ".mysql_error());
mysql_select_db("quiz", $connection) or die("Error selecting db. ".mysql_error());
$Option['Option1'] = false;
$Option['Option2'] = false;
$Option['Option3'] = false;
$Option[$_POST['radio']] = true;
  $order= "INSERT INTO radio (Option1,Option2,Option3) VALUES ('{$Option['Option1']}, {$Option['Option2']},{$Option['Option3']}')";
  $result=mysql_query($order) or die(mysql_error());
?>

現在我收到錯誤“列數與第1行的值計數不匹配”。 任何幫助將不勝感激。

首先,你的第三個無線電定義中缺少一個空間。 此外,名稱與后期處理“Opt1”與“Option1”上的數組值不匹配。

數組中的$選項最終得到4個元素而不是預期的3個(Option1,Option2,Option3和其他任何選項)。

以下是更正后的表單定義。

<?php
$connection = mysql_pconnect("localhost", "root", "") or die ("Error connection. ".mysql_error());
mysql_select_db("quiz", $connection) or die("Error selecting db. ".mysql_error());
$query = "SELECT * FROM question ORDER BY RAND() LIMIT 0,1";
$result = mysql_query($query) or die("Error processing query. ".mysql_error());
echo "<form method = 'post' action = 'test5.php'>";
echo "<table border = '1'>";
while($data = mysql_fetch_array($result))
{
        echo "".$data['Question']."<br>";
        echo "<input type = 'radio' name='radio' value='Option1'>";
        echo "".$data['Option1']."<br>";
        echo "<input type = 'radio' name='radio' value='Option2'>";
        echo "".$data['Option2']."<br>";
        echo "<input type = 'radio' name='radio' value='Option3'>";
        echo "".$data['Option3']."<br>";
}
echo "<tr><td align = 'center'><input type = 'submit' name = 'go' value = 'GO'></td></tr>";
echo "</table>";
echo "</form>";

然后

 $order= "INSERT INTO radio (Option1,Option2,Option3) VALUES ('{$Option['Option1']}, {$Option['Option2']},{$Option['Option3']}')";

應該

 $order= "INSERT INTO radio (Option1,Option2,Option3) VALUES ('".$Option['Option1']."','".$Option['Option2']."','".$Option['Option3']."')";

查詢字符串中' 's '存在不匹配/重疊編碼。 確保Option數組中的所有值都是escapsed屬性,以防止SQL注入。

您只需在代碼中通過“...”設置一個值。 嘗試這個:

$order= "INSERT INTO radio (Option1,Option2,Option3) VALUES ('{$Option['Option1']}', '{$Option['Option2']}','{$Option['Option3']}')";

您的查詢假定值只有一個而不是三個值:

    $order= "INSERT INTO radio (Option1,Option2,Option3) 
VALUES ('.... .... ....')";

正如Orangepill上面所述,請提出這樣的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM