Php MySQL语法?应该很简单!
我在使用$updatequery SQL时遇到了问题,这个php脚本在一个ajax调用中接受3个post变量,第一个是以前正确答案的数组,与此处无关$win是0还是1取决于上一个问题的回答是否正确,$id是单词的主要id(这是一个单词匹配游戏,就像韩语抽认卡一样)$updatequery旨在为每个单词建立统计数据,有多少人正确地理解了它,并通过记录单词被点击的次数和正确回答的次数来确定单词的难度。如果我答错了这个词,它会准确地反映在数据库中:单击一次,没有赢家。但是我的回答正确吗?它说0次点击,数据库中没有赢家…出什么问题了Php MySQL语法?应该很简单!,php,mysql,sql,Php,Mysql,Sql,我在使用$updatequery SQL时遇到了问题,这个php脚本在一个ajax调用中接受3个post变量,第一个是以前正确答案的数组,与此处无关$win是0还是1取决于上一个问题的回答是否正确,$id是单词的主要id(这是一个单词匹配游戏,就像韩语抽认卡一样)$updatequery旨在为每个单词建立统计数据,有多少人正确地理解了它,并通过记录单词被点击的次数和正确回答的次数来确定单词的难度。如果我答错了这个词,它会准确地反映在数据库中:单击一次,没有赢家。但是我的回答正确吗?它说0次点击,
<?php
$dbcon = mysql_connect("localhost", "tulesblo_tules", "Gromit554?") or die(mysql_error());
mysql_select_db("tulesblo_koreangame", $dbcon) or die(mysql_error());
mysql_query("SET NAMES utf8");
$correctarray = explode(",", $_POST["correct"]);
$win = (int)$_POST["win"];
$id = (int)$_POST["id"];
$correct = "";
$y = 1;
if ($id > 0) {
$updatequery = "UPDATE words SET clicks=clicks+1 AND wins=wins+ '$win' WHERE id= '$id'";
mysql_query($updatequery) or die(mysql_error());
}
foreach($correctarray as $x){
$correct .= " id != " . $x;
if ($y == count($correctarray)) {break;}
$correct .= " AND"; $y++;
}
//pick 4 random pairs
$filter = count($correctarray) > 1?"WHERE" . $correct:"";
$querystring = "SELECT * FROM words ".$filter." ORDER BY RAND() LIMIT 4";
$query = mysql_query($querystring);
//turn them into multiarray
$x = 0;
$multiarray = array();
while ($result = mysql_fetch_assoc($query)){
$multiarray[$x] = array(
"id" => $result['id'],
"korean" => $result['korean'],
"english" => $result['english']
);
$x++;
}
array_push ($multiarray,$win,$id);
//send as JSON to client
//array_push($multiarray, $querystring, count($correctarray));
echo json_encode($multiarray);
?>
在更新多个列时没有和。用逗号把它们分开-
$updatequery = "UPDATE words SET clicks=clicks+1, wins=wins+ '$win' WHERE id= '$id'"
我可以推荐的是一步一步地调试-将查询记录到文件中,您将发现错误。我建议您也阅读有关SQL注入的内容,并了解如何使用mysqli,以便使用准备好的语句和绑定变量。感谢Yaronius,我没有从mysql_error()中获得任何有用的信息,我知道变量是正确的,因为我已经用php输出了它们,我怎样才能更密切地监视MySQL在做什么?我如何将查询记录到文件中?还要感谢Mark,我基本上知道SQL注入是什么,我通常使用mysql\u real\u escape\u string,我也会将其包括在内。我还将查找准备好的语句和绑定变量。我真的很欣赏这些输入:)是的,你真漂亮!我知道这会很简单,有人特别告诉我,你必须使用这些语句,我猜它们是像我一样的SQL noob:P我已经测试过了,它可以工作了。非常感谢Sachin:)@David-如果有多个条件,则必须在WHERE子句中使用AND。不在更新中。;)