为什么我的数据库中的数据没有更新?

时间:2015-02-02 04:35:56

标签: php

我正在尝试在我的数据库中更新一行表单。我第一次点击其中一个选项,两个选项都填充'1'。之后的每次点击都不起作用。我检查了一个网站,看看我的语法是否正确,它说没有错误。我没有长时间使用PHP,所以我真的不知道我哪里会出错。

如果修复非常简单,我很抱歉,但就像我说的那样,我很久没有这么做了。

选项是我的和我朋友的名字,所以我已经审查了他们。

<?php
include_once('db_feat.php');

$vote1 = $_POST['friend'];
$vote2 = $_POST['me'];
$vote = '';

$select = "SELECT * FROM `vote` WHERE 1";
mysqli_query($db_feat, $select);

$currentfriend = $row['friend'];
$currentme = $row['me'];

$finalfriend = '';
$finalme = '';

if($vote == $votefriend) {
    $finalfriend = $currentfriend + 1;
} else {
    $finalfriend = $currentfriend + 0;
}
if($vote == $voteme) {
    $finalme = $currentme + 1; 
} else {
    $finalme = $currentme + 0;
}

$insert = "UPDATE `vote` SET `friend`=$finalfriend,`me`=$finalme WHERE 1";
mysqli_query($db_feat, $insert);

if (!mysqli_query($db_feat,$insert)){
    echo("Error description: " . mysqli_error($db_feat));
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>index.php</title>
    <meta charset="UTF-8">
    <link rel="shortcut icon" href="Media/Images/favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" type="text/css" href="CSS/divs.css">
    <link rel="stylesheet" type="text/css" href="CSS/styles.css">
    </head>

<body>
    <?php include_once('template_pageTop.php'); ?>
    <div id="pageMiddle">
        <div id="content">
            <div id="poll">
                <form action="index.php" method="post">
                    <input type="image" src="Media/Images/votefriend.png" name="friend" id="friend">
                    <input type="image" src="Media/Images/voteme.png" name="me" id="me">
                </form>
            </div>

            <?php echo $finalfriend; ?></br />
            <?php echo $finalme; ?>
        </div>
    </div>
    <?php include_once('template_pageBottom.php'); ?>
</body>

以下是我从数据库中获取的代码。

CREATE TABLE IF NOT EXISTS `vote` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`friend` int(11) NOT NULL,
`me` int(11) NOT NULL,
PRIMARY KEY (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

2 个答案:

答案 0 :(得分:0)

它应该是这样的。

table

初始值

my_name | my_friend_name
1       | 1

更新后

my_name | my_friend_name
2       | 2
根据您的要求

2或其他

答案 1 :(得分:0)

首先,看起来你的查询的语法是错误的。您的WHERE子句看起来应该是这样的。

$select = "SELECT * FROM `vote` WHERE friend = 1";
$insert = "UPDATE `vote` SET `friend`= {$final1},`me`= {$final2} WHERE friend = 1";

要考虑的其他事项。在你的代码的这一部分中,你正在做$var + 0并没有完成任何事情,你最好使用原始值。还尝试使用相同的比较运算符(===而不是==),以便您知道值完全相同。

if($vote === $votefriend) {
    $finalfriend = $currentfriend + 1;
} else {
    $finalfriend = $currentfriend;
}
if($vote === $voteme) {
    $finalme = $currentme + 1; 
} else {
    $finalme = $currentme;
}

此外,您永远不想盲目地为变量赋值并尝试使用它们。始终验证/消毒。你应该有这样的结构。

if ($_POST['form']) {
    if ($_POST['friend']) {
        $vote1 = $_POST['friend'];
    } else {
        echo "Friend is empty";
        exit;
    }
    if ($_POST['me']) {
    $vote2 = $_POST['me'];
    } else {
        echo "Me is empty";
        exit;
    }

    //rest of your code//
} else {
    echo "form was not received";
    exit;
}

如果您的$_POST值为空,显然它们不会从表单到PHP脚本,因为它没有提交。

我强烈建议你从一开始就养成良好的习惯和技巧,这样你就不必再回去修理坏代码了(就在那里)。