您的SQL语法有错误;查看与MySQL对应的手册

时间:2015-02-28 22:19:01

标签: php

<?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'附近使用正确的语法

2 个答案:

答案 0 :(得分:1)

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

这应该有效,因为你有一个名为'order'的表,你必须在名称之前和之后使用'`', BECAUSE 这里有一个叫做order的SQL函数,自从你不能SELECT * FROM ORDER,因为ORDER是一个函数,那么你会收到一个错误。

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

答案 1 :(得分:0)

查看您的查询:

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

这里有一些问题。

首先,orderreserved word。为了将它用作标识符,您需要将其括在后面的标记中:

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

其次,您的查询是全开SQL Injection Attacks。该会话值could have anything in it。由于您有效地将该值作为代码执行,因此您无法控制您正在执行的代码的语法。我建议修复它。