Php 我的SQL语法中有错误

Php 我的SQL语法中有错误,php,mysql,Php,Mysql,所以,我整天都在和这个密码抗争。我试了很多东西,都没用。 因此,我来到这里寻求答案 编辑:我修复了评论中提到的一些问题。然而,问题依然存在。 错误是: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'values where `item_id` = 'Throne' ORDER

所以,我整天都在和这个密码抗争。我试了很多东西,都没用。 因此,我来到这里寻求答案

编辑:我修复了评论中提到的一些问题。然而,问题依然存在。 错误是:

You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
'values where `item_id` = 'Throne' ORDER BY `timestamp` DESC LIMIT 10'
at line 1
这是我的PHP代码:

    include("config.php");
    include("functions.php");
                if(isset($_GET['name'])){
                    $id = mysql_real_escape_string($_GET['name']);


                        $get_rares = mysql_query("SELECT * FROM rares WHERE `name` = '".$id."'") or die(mysql_error());
    $rare = mysql_fetch_array($get_rares);
                    if(mysql_num_rows($check) == 0){
                        echo 'The rare '.$id.' doesn\'t exist!<br>';





                    }else{
                        $r = mysql_fetch_array($check);
                        $ids = $r["id"];
                        $name = $r["name"];
                        $value = $r["value"];
                        $lastedited = $r["lastedited"];
                        $catid = $r["catid"];
                        $desc = $r["desc"];
                        $image = $r["image"];
                        $big_image = $r["big_image"];
                        $release_value = $r["release_value"];
                        $releasedate = $r["releasedate"];                       
                    }
                }else{
                    echo 'No rare has been selected to view.<br><br>Click <a href="members.php">here</a> to go to the rare list.';
                }
                ?>          
                <?php $values = mysql_query("SELECT * FROM values where `item_id` = '".$id."' ORDER BY timestamp DESC LIMIT 10") or die(mysql_error());
include(“config.php”);
包括(“functions.php”);
如果(isset($\u GET['name'])){
$id=mysql\u real\u escape\u字符串($\u GET['name']);
$get\u rares=mysql\u查询(“从rares中选择*,其中`name`=''.$id.'''))或die(mysql\u error());
$rare=mysql\u fetch\u数组($get\u rares);
if(mysql_num_rows($check)==0){
echo“稀有的”$id.“不存在!
”; }否则{ $r=mysql\u fetch\u数组($check); $id=$r[“id”]; $name=$r[“name”]; $value=$r[“value”]; $lastedited=$r[“lastedited”]; $catid=$r[“catid”]; $desc=$r[“desc”]; $image=$r[“image”]; $big_image=$r[“big_image”]; $release_value=$r[“release_value”]; $releasedate=$r[“releasedate”]; } }否则{ echo“未选择要查看的稀有品种。

单击以转到稀有品种列表。”; } ?> 省略其中一个“where”:

以及:

在任何查询中,有许多词不能作为列、表、视图或任何名称,但要注意让mysql正确解释它们,请看


名称
是其中的两个。

名称
是一个字符串,您需要引用它

$get_rares = mysql_query("SELECT * FROM rares WHERE name = '$id'") or die(mysql_error());


正如@Axel所指出的,
其中
也被写入了两次。

在MySQL中,
是一个关键字,如果不加引号,就不能将其用作字段或表名:

SELECT * FROM values where `item_id` = '".$id."' ORDER BY timestamp DESC LIMIT 10
应该是

SELECT * FROM `values` where `item_id` = '".$id."' ORDER BY `timestamp` DESC LIMIT 10

VALUES
是一个MySQL关键字,当用作名称时需要加上反勾:

SELECT * FROM `values` WHERE `item_id` = '$id' ORDER BY timestamp DESC LIMIT 10

VALUES
是mysql保留关键字,您需要像这样用反勾号将其括起来

     SELECT * FROM `values` where

错误输出是什么?添加了错误输出。我知道我忘了什么!
id
是整数吗?如果是的话,你为什么要把标签从上面取下来?如果不是,则在查询中需要引号。另外,将参数化查询与PDO(或MySQLi)一起使用,而不是使用
mysql\uu
函数集。它们已被弃用。在第一条SQL语句中有两个“where”,并且在查询时需要在引号中放入字符串值。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO。
SELECT * FROM `values` WHERE `item_id` = '$id' ORDER BY timestamp DESC LIMIT 10
     SELECT * FROM `values` where