避免自动按字母顺序排序MySQLi


Avoid automatic alphabetical sorting MySQLi

我有一个简单的表格,我正在填充PHP和MySQLi。该表仅包含一个字段,我已将其设置为主键以避免重复。除了MySQLi按字母顺序对输入进行排序之外,一切都工作正常,即使我没有以这种方式将它们放入数据库中。我想稍后从表中拉出,并按照我将项目放入数据库的确切顺序回显所有内容。

有没有办法轻松完成此操作?我是否必须使用其他字段作为主键?

$mysqli = connect_db();
$mysqli->query('TRUNCATE TABLE things');
$things = [bat, cat, apple, zero];
for($i = 0; $i < count($things); $i++){
    $query = $mysqli->prepare('INSERT INTO things (name) VALUES (?)');
    $query->bind_param('s', $things[$i]);
    $query->execute();
    $query->close();
}
$mysqli->close();
// The table puts them in the following order: apple, bat, cat, zero

您必须在表结构中添加一个INT AUTO_INCREMENT字段。然后,您可以在输出时ORDER BY id 字段。完成此操作后,您可以像这样向表中添加行:

$things = [bat, cat, apple, zero];
$val = '';
$query = $mysqli->prepare('INSERT INTO things (name) VALUES (:name)');
$query->bind_param(':name', $val); // $val is bound by reference!
for($i = 0; $i < count($things); $i++){
    $val = $things[$i];
    $query->execute();        
}
$query->close();
$mysqli->close();

免责声明:我通常使用 PDO,所以不能保证这段代码完美运行。这只是为了获得准备一次语句然后在循环中绑定和执行的想法。

这是

应该的,因为该字段是主键,因此当它的索引只有一个字段时,MySQL 证明它被排序 (a-z) 或 (1-n) 是合理的。您可以添加另一个字段(Id 作为 INT 和主键),然后将字段更改为 UNIQUE 索引。

试试这个:

$things = array('bat','cat','apple','zero');
foreach($things as $thing) {
    // $thing = bat, cat, apple, zero 
}

编辑:刚看到你没有ID字段,添加一个!id(int 11) auto_increment primary_key等,那么你应该离开