Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正在忽略mysql update子句_Php_Mysql_Sql - Fatal编程技术网

Php 正在忽略mysql update子句

Php 正在忽略mysql update子句,php,mysql,sql,Php,Mysql,Sql,我有一张有日期的桌子,ID1,ID2 score1和score2。当用户以html形式输入特定的日期和id时,我试图通过php更新一行。我已经验证了所有用户条目。当我运行查询时,它会更新表中的所有行,而不是一行。以下是我的代码片段: include('connect.php'); $q = mysqli_query($dbc, "SELECT * from Game"); while ($row =mysqli_fetch_array($q, MYSQLI_ASSOC)) { mys

我有一张有日期的桌子,ID1,ID2 score1和score2。当用户以html形式输入特定的日期和id时,我试图通过php更新一行。我已经验证了所有用户条目。当我运行查询时,它会更新表中的所有行,而不是一行。以下是我的代码片段:

include('connect.php');

$q = mysqli_query($dbc, "SELECT * from Game");
while ($row =mysqli_fetch_array($q, MYSQLI_ASSOC))
{

    mysqli_query($dbc, "UPDATE Game SET score1 ='".$points1."', score2='".$points2."'
    WHERE '".$date."' = '".$row['Date']."' AND '".$id."' = '".$row['ID1']."' ");
}

mysqli_close($dbc);

您的where子句不应该是:

WHERE Date = '".$row['Date']."' AND ID1 = '".$row['ID1']."' ");
而不是

WHERE '".$date."' = '".$row['Date']."' AND '".$id."' = '".$row['ID1']."' ");

在后一种情况下,您可能是偶然地使用了一些变量作为字段名,这可能会导致一些不必要的问题。例如,在您的情况下,可能会导致where子句中出现标识条件,这将导致您的所有行都将得到更新。

update语句中的where子句仅引用文字。没有列引用

为了进行调试,我建议您将SQL连接成一个字符串,并将其回显出来

$sql = "UPDATE Game SET score1 ='".$points1."', score2='".$points2."'
   WHERE '".$date."' = '".$row['Date']."' AND '".$id."' = '".$row['ID1']."' ";
echo $sql;
mysqli_query($dbc, $sql);

如下所示设置这些变量的值:

$date        = 'fee'
$row['Date'] = 'fi'   
$id          = 'fo'   
$row['ID1']  = 'fum'
生成的UPDATE语句中的
WHERE
子句如下所示:

WHERE 'fee' = 'fi' AND 'fo' = 'fum'
WHERE fee = 'fi' AND fo = 'fum'
MySQL将单引号中的值视为字符串文本。这在SQL方面没有什么问题(它的语法是有效的),但您更可能希望
WHERE
子句更像这样:

WHERE 'fee' = 'fi' AND 'fo' = 'fum'
WHERE fee = 'fi' AND fo = 'fum'
费用
fo
作为列的参考。

问题在于
“$date.”
“$id.”
。您需要有实际的列名,然后为其赋值。
$date
$id
的值是什么?