我正在尝试在我的数据库中更新一行表单。我第一次点击其中一个选项,两个选项都填充'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 ;
答案 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脚本,因为它没有提交。
我强烈建议你从一开始就养成良好的习惯和技巧,这样你就不必再回去修理坏代码了(就在那里)。