您的 SQL 语法有误;检查与您的 MySQL 相对应的手册


You have an error in your SQL syntax; check the manual that corresponds to your MySQL

<?php
include"include/db.php";
                $sql=mysql_query("select * from order where user='".$_SESSION['user']."' and flag=0") or die(mysql_error());
                $i=0;
                $sum=0;
                $sum2=0;
                while($rows=mysql_fetch_assoc($sql))
                {
                $sum2+=$rows['tedad'];
                $sum+=getproductPrice($rows['pid']);
                echo "<tr style='"border:#00CCFF thin dotted'"><td><img src='images/bullet_delete.png' ></td>
                <td align=center>".$rows['tedad']."</td>
                <td align=left>".getproductPrice($rows['pid'])."</td>
                <td align=right>".getproductName($rows['pid'])."</td>
                <td align=center>".++$i."</td></tr>";
?>

这是我的代码,我该如何纠正错误我的错误是:

您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的"order where user='zahra20' 和 flag=0' 附近使用的正确语法

$sql=mysql_query("select * from `order` where user='".$_SESSION['user']."' and flag=0") or die(mysql_error());

这应该有效,因为你有一个名为"order"的表,你必须在名称前后使用"'',因为有一个名为order的SQL函数,并且由于你不能从订单中选择*,因为ORDER是一个函数,那么你得到一个错误。

您还应该考虑使用PDO或MySQLi进行查询,因为旧的mysql根本不安全。

查看您的查询:

"select * from order where user='".$_SESSION['user']."' and flag=0"

这里有几点问题。

首先,order是一个保留词。 为了将其用作标识符,您需要将其括在反引号中:

"select * from `order` where user='".$_SESSION['user']."' and flag=0"

其次,您的查询很容易受到 SQL 注入攻击。 该会话值可以包含任何内容。 由于您有效地将该值作为代码执行,因此您无法控制正在执行的代码的语法。 我建议解决这个问题。

相关文章: