【问题标题】:Adding rows to mysql - get sorted randomly - want them on top向 mysql 添加行-随机排序-希望它们在顶部
【发布时间】:2012-05-26 17:32:35
【问题描述】:

我有一种“问题”,我不知道它是如何发生的。如果我通过 php 将行添加到我的表中,它只是将它们随机添加到某处。但我希望将它们添加到顶部。相反,它只是将它们添加到整个表格中。

 $name = ($_GET["name"]);
 $sql = "INSERT INTO $DB_Table VALUES('$name')";

 $number = ($_GET["number"]);
 $sql = "INSERT INTO $DB_Table VALUES('$number')";

 $con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die (mysql_error()); 
 mysql_select_db($DB_Name,$con) or die(mysql_error()); 

 mysql_query("INSERT INTO $DB_Table (Name,number)
 VALUES ('$name','$m_yolo')");



 $res = mysql_query($sql,$con) or die(mysql_error());


        mysql_close($con);
if ($res) {
    echo "success";
}else{
    echo "faild";
}// end else
?>

【问题讨论】:

    标签: php mysql row


    【解决方案1】:

    在关系表中没有行排序之类的东西。如果要订购它们,则需要使用ORDER BY 子句。您可以添加一个TIMESTAMP 列,您可以在选择数据时对其进行排序:11.3.1. The DATE, DATETIME, and TIMESTAMP Types

    【讨论】:

    • 谢谢,会调查的。
    【解决方案2】:

    创建另一个表,但在其中添加一个 ID 自增列:

    CREATE TABLE IF NOT EXISTS `table` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      `number` int(10) NOT NULL,
      PRIMARY KEY (`id`)
    );
    

    然后你可以像这样插入新行:

    $sql = "INSERT INTO $DB_Table (id, name,number) VALUES ('', '$name', '$number')";
    

    然后您的新条目将按 id 排序。您可以在选择查询中对它们进行排序:

    $sql = "SELECT 'name', 'number' FROM `table` ORDER BY 'id' DESC";
    

    关于您的代码的一点说明:直接使用 $_GET 中的值是不安全的,就像您在代码开头所做的那样。例如,尝试使用mysql_real_escape_string()

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 2015-03-28
      相关资源
      最近更新 更多