-2

我有一个在 phpMyAdmin 中有效的查询,但在通过 php 运行时无效

这是查询:

DELETE FROM 'table' WHERE 'id' NOT IN ( SELECT DISTINCT id FROM ( SELECT * FROM 'table' ORDER BY scoreDESC LIMIT 10 ) foo)

基本上,它对表格进行排序以降序得分,然后保留前 10 名并删除其余的。我可以通过 phpmyadmin 运行这个很好的槽,但我的 php 代码说不

这是 php 脚本:

function add_highscore()
{

    mysql_query("DELETE FROM highscores WHERE id NOT IN ( SELECT DISTINCT id FROM ( SELECT * FROM highscores ORDER BY score DESC LIMIT 10 ) foo)")
    or die('0');

    echo "1";

    mysql_close($table_id);
}

连接没有问题,我在有效的脚本中有更多功能。

有任何想法吗?非常感谢您的帮助!

干杯,乔恩

4

4 回答 4

0

可能是函数没有被调用或连接没有建立。你应该尝试 mysql_error 来捕获错误或使用 try catch 来捕获错误

于 2013-02-08T20:27:01.310 回答
0

试试这个:

<?PHP
function add_highscore()
{
    $link = mysqli_connect($host, $user, $password, $database);
    $query = "DELETE FROM highscores WHERE id NOT IN ( SELECT DISTINCT (id) FROM ( SELECT * FROM highscores ORDER BY score DESC LIMIT 10 ) foo)";
    mysqli_query($link, $query)    or die('0');

    echo "1";

    mysqli_close($table_id);
}
?>

MYSQL版本

<?PHP
function add_highscore()
{

    $link = mysql_connect($server, $username, $password);
    mysql_select_db($database_name, $link);

    $query = "DELETE FROM highscores WHERE id NOT IN ( SELECT DISTINCT(id) FROM ( SELECT * FROM highscores ORDER BY score DESC LIMIT 10 ) foo)";
    return mysql_query($query)   or die('0');

    echo "1";

    mysql_close($link);
}

?>
于 2013-02-08T20:30:28.570 回答
0

我建议你使用 ORM 库,它更容易处理查询并且更安全

例如:红豆

在本站搜索

于 2013-02-08T20:38:19.637 回答
0

将此添加到脚本的顶部:

error_reporting(E_ALL);

并替换:

die('0');

和:

die(mysql_error());

这应该有助于表明脚本的“不工作”种类。

于 2013-02-08T20:44:25.183 回答