首页 > 解决方案 > 截断不正确的 DOUBLE 值:| 尝试更新数据库中的数据时出错

问题描述

我正在尝试进行民意调查,其中用户通过 PHP 页面进行投票,将数据发送到存储民意调查结果值的数据库。

我还试图让同一个帐户不能多次投票。在这方面,我遇到了障碍。当我将ID代码中的$useridwhich 从查询中收集然后传递给vote.phpin a$_SESSION时,它会说

截断不正确的 DOUBLE 值:3。

它正在调用我的变量 DOUBLE 值?

Login.php 代码:

$sqlID = "SELECT ID FROM Users WHERE Konto = '$user'";
        $checkID = $connection->query($sqlID);

        while ($row = $checkID->fetch_assoc()) {
            $setID = $row['ID']."<br>";
        }


        $_SESSION['sess_id'] = $setID;
        $_SESSION['inloggning'] = TRUE; // Ger inloggning en boolean som används senare.

Vote.php 代码:

$userid = $_SESSION['sess_id'];

$voteValidate = "SELECT has_voted FROM Users WHERE ID = '$userid'";
$voteValidationResult = $connection->query($voteValidate);

while ($row = $voteValidationResult->fetch_assoc()) {
    $checkVoted = $row['has_voted']."<br>";
}

if ($_SESSION['inloggning'] != TRUE || $checkVoted != 0) { // Tar variabler från login.php och kontrollerar dem, om de inte är sanna så skickas man tillbaka.
  echo "<script type='text/javascript'>alert('Du är antingen inte inloggad eller så har du redan röstat.');</script>";
    // header("Location: skyddad_sida.php"); // Skickar tillbaka en användare om de har kommit till skyddad_sida.php utan att gå igenom login.php.
    exit;
}
if (isset($_POST["voteOriginal"])) {
    $voteQuery = "UPDATE polls_choices SET poll_vote_amount = poll_vote_amount + 1 WHERE poll_choice_name = 'Original'";
    $voteExecute = $connection->query($voteQuery); // Utför förfrågan i databas.
    $preventVote = "UPDATE users SET has_voted = 1 WHERE ID = '$userid'";
    if ($connection->query($preventVote) === TRUE) { // Queryar databasen och kontrollerar att det fungerade.
        echo "<strong><font color ='green'>Bra.</font></strong>";
      } else { // Annars blir det en error.
        echo "Error: " . $preventVote . "<br>" . $connection->error . "$userid";
      }

标签: phphtmlmysql

解决方案


推荐阅读