PHP和MySQL,Query在一个而不是另一个中工作

时间:2013-02-08 20:20:32

标签: php mysql mysqli

我有一个在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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);
}

?>

答案 2 :(得分:0)

我建议您使用ORM库,使用查询更容易,更安全

例如:RedBean

Search on this site

答案 3 :(得分:0)

将其添加到脚本的顶部:

error_reporting(E_ALL);

并替换:

die('0');

使用:

die(mysql_error());

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