也许它的 Mysql 语法错误?
Maybe its Mysql syntax error?
你好,我不知道我的错误在这里是否清楚如果我打开我的网站,我会在左侧床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>";
?>
抱歉,如果它已经出现,但我没有看到任何符合我的问题的 post
谢谢大家:)
你的 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 FIELDS INTO TABLE WHERE CRITERIA,您不必担心插入时的 ORDER BY,就在您查询数据时。也许:
INSERT characters.char_name,
characters.pvpkills,
char_templates.classname,
characters.online
INTO characters,
char_templates
WHERE characters.classid=char_templates.classid
或:
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 100
这是你的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;
1) 你想要 select
而不是 insert
.
2) NumberOfResults 必须是数字,不能是字符串。我没有看到名称为 'NumberOfResults' 的变量,所以也许您只是想让它成为一个特定值,也许是 100?
3) 最好为您的 table 使用别名,而不是完整的 table 名称。
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;
您的查询语法不正确。
看到查询下方的回声,您想使用 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
旁注: NumberOfResults
不正确,被视为 constant。使用错误报告后,会触发 Undefined constant NumberOfResults
通知。那应该是一个数字或一个预定义的变量。您可能打算使用 $NumberOfResults
并在查询之前定义,例如 $NumberOfResults = 10;
。
请参阅 SELECT 的手册:
和 INSERT 手册:
使用 or die(mysqli_error($chandle))
到 mysqli_query()
而不是
or die("Bed Sql syntax")
会发出关于查询失败原因的真正错误。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只应在试运行中进行,绝不能在生产中进行。
你好,我不知道我的错误在这里是否清楚如果我打开我的网站,我会在左侧床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>";
?>
抱歉,如果它已经出现,但我没有看到任何符合我的问题的 post 谢谢大家:)
你的 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 FIELDS INTO TABLE WHERE CRITERIA,您不必担心插入时的 ORDER BY,就在您查询数据时。也许:
INSERT characters.char_name,
characters.pvpkills,
char_templates.classname,
characters.online
INTO characters,
char_templates
WHERE characters.classid=char_templates.classid
或:
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 100
这是你的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;
1) 你想要 select
而不是 insert
.
2) NumberOfResults 必须是数字,不能是字符串。我没有看到名称为 'NumberOfResults' 的变量,所以也许您只是想让它成为一个特定值,也许是 100?
3) 最好为您的 table 使用别名,而不是完整的 table 名称。
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;
您的查询语法不正确。
看到查询下方的回声,您想使用 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
旁注: NumberOfResults
不正确,被视为 constant。使用错误报告后,会触发 Undefined constant NumberOfResults
通知。那应该是一个数字或一个预定义的变量。您可能打算使用 $NumberOfResults
并在查询之前定义,例如 $NumberOfResults = 10;
。
请参阅 SELECT 的手册:
和 INSERT 手册:
使用 or die(mysqli_error($chandle))
到 mysqli_query()
而不是
or die("Bed Sql syntax")
会发出关于查询失败原因的真正错误。
将 error reporting 添加到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只应在试运行中进行,绝不能在生产中进行。