Php 可能是Mysql语法错误?

Php 可能是Mysql语法错误?,php,mysql,syntax,Php,Mysql,Syntax,大家好,我不知道我的错误很清楚,如果我打开我的网站,我在左边的床Sql语法这里是我的代码 <?php $dbuser="root"; $dbpass=""; $dbname="l2jgs"; //the name of the database $chandle = mysqli_connect("localhost", $dbuser, $dbpass) or die("Connection Failure to Database"); mysqli_select_db

大家好,我不知道我的错误很清楚,如果我打开我的网站,我在左边的床Sql语法这里是我的代码

  <?php

$dbuser="root";
$dbpass="";
$dbname="l2jgs";  //the name of the database
$chandle = mysqli_connect("localhost", $dbuser, $dbpass) 
    or die("Connection Failure to Database");
mysqli_select_db($chandle, "l2jgs");
$sql="insert characters.char_name,characters.pvpkills,char_templates.ClassName,characters.online from characters,char_templates where characters.classid=char_templates.Classid order by characters.pvpkills DESC LIMIT "."NumberOfResults";
echo"<html><head></head><body bgcolor='#000000' style='color:rgb(200,200,200)'>";
echo "<table  border='2' align=center width=500>";
echo "<tr><th>Nr.</th><th>Name</th><th>Pvp Kills</th><th>Main class</th><th>Status</th></tr>\n";
$nr=1;
if ($result=mysqli_query($chandle,$sql)or die("Bed Sql syntax")) {
  while ($row=mysql_fetch_row($result)) {
     echo "<tr><td align=center>".$nr."</td>";
     $nr++;
   echo "<td align=center>".$row[0]."</td>";
   echo "<td align=center>".$row[1]."</td>";
        echo "<td align=center>".$row[2]."</td>";
        if($row[3])
{echo "<td align=center style='color:rgb(0,255,0)'>Online</td></tr>\n"; }
  else{echo "<td align=center style='color:rgb(255,0,0)'>Offline</td></tr>\n";}
  }
} else {
  echo "<!-- SQL Error ".mysql_error()." -->";
}
echo "</table></body></html>";


?>

我对您的SQL语句很感兴趣:

INSERT characters.char_name, 
         characters.pvpkills, 
         char_templates.classname, 
         characters.online 
FROM     characters, 
         char_templates 
WHERE    characters.classid=char_templates.classid 
ORDER BY characters.pvpkills DESC limit numberofresults
通常情况下,这是将字段插入到表中,其中包含条件,并且您不应该在查询数据时担心插入的顺序。也许:

INSERT characters.char_name, 
         characters.pvpkills, 
         char_templates.classname, 
         characters.online 
INTO     characters, 
         char_templates 
WHERE    characters.classid=char_templates.classid 
或:

以下是您的sql(有问题):

1) 您想
选择
而不是
插入

2) NumberOfResults必须是数字,而不是字符串。我没有看到名为“NumberOfResults”的变量,所以您可能只想将其设置为特定值,可能是100?
3) 最好为表使用别名,而不是完整的表名。
4) 使用php多行字符串,以这种方式读取sql查询要容易得多

固定版本,准备复制粘贴:

$sql = <<< SQL  
    SELECT  
        char.char_name,  
        char.pvpkills,  
        ct.ClassName,  
        char.online  
    FROM  
        characters char,  
        char_templates ct  
    WHERE  
        char.classid = ct.Classid  
    ORDER BY  
        char.pvpkills DESC  
    LIMIT 100;  
SQL;  

$sql=您的查询语法不正确

看到查询下方的回声,您希望使用
SELECT
而不是
INSERT

$sql="SELECT characters.char_name,characters.pvpkills,
      char_templates.ClassName,characters.online 
FROM characters,char_templates 
WHERE characters.classid=char_templates.Classid 
ORDER BY characters.pvpkills 
DESC LIMIT "."NumberOfResults"; // <= unclear

旁注:错误报告只能在暂存阶段进行,而不能在生产阶段进行。

检查您的查询。似乎不正确。您的查询似乎是
SELECT
。因此,将
$sql=“select characters.char\u name,…
$sql = <<< SQL  
    SELECT  
        char.char_name,  
        char.pvpkills,  
        ct.ClassName,  
        char.online  
    FROM  
        characters char,  
        char_templates ct  
    WHERE  
        char.classid = ct.Classid  
    ORDER BY  
        char.pvpkills DESC  
    LIMIT 100;  
SQL;  
$sql="SELECT characters.char_name,characters.pvpkills,
      char_templates.ClassName,characters.online 
FROM characters,char_templates 
WHERE characters.classid=char_templates.Classid 
ORDER BY characters.pvpkills 
DESC LIMIT "."NumberOfResults"; // <= unclear
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code