我有一个数组,它给出了表中不同概念的顺序。因为它是一个数组,所以它以0开头。我有不同的选项来存储概念的顺序。我的问题是:
$order = $_GET['order'];
print_r ($order); // this gives: Array ( [0] => first [1] => second [2] => third )
foreach($order as $key => $value) {
mysqli_query($con,"UPDATE principal
SET concept = $value
WHERE id = $key");
}发布于 2014-07-26 15:01:31
如果我正确地理解了它,那么显然您希望将同一列用于两个完全不同的目的:
虽然这可能是可以做到的,但IMHO令人困惑,而且很难维护。从设计的角度来看,最好只使用两列。它更干净,而且它不会强迫您在需要设置不同顺序时更新所有链接表中的键。
关于AUTO_INCREMENT特性,它是一种机制,旨在生成唯一的递增无意义的数字。它主要是为代理密钥设计的,它不允许像重用值这样简单的东西。
你的其他问题:
让MySql表的id以0开头是正确的吗?
这没有什么问题(我有时会这么做),但是MySQL有一个让它很难做的特性:零
如果没有,我能让数组从1开始吗?
如果键入数组:
$foo = array(1 => 'a', 'b', 'c', 'd');如果你已经有了它:
foreach($order as $key => $value) {
mysqli_query($con,"UPDATE principal
SET concept = $value
WHERE id = " . ($key+1));
}
$key = 0;
foreach($order as $value) {
$key++;
mysqli_query($con,"UPDATE principal
SET concept = $value
WHERE id = $key");
}
foreach(array_values($order) as $key => $value) {
mysqli_query($con,"UPDATE principal
SET concept = $value
WHERE id = " . ($key+1));
}
// ...发布于 2014-07-26 14:53:54
使MySql表的id以0开头是正确的吗?- NO
如果没有,我能让数组以1开头吗?- YES
由于MySql不接受2个自动增量列.-您应该更改DB设计,以便能够关联主数据/外文数据。
现在不知道您的确切需求是什么,但是您应该将数据拆分到两个不同的表中,在两个表中都有一个公共列,作为两个表之间的主/外键。
如果要从1启动数组id,请使用
<?php
$arr = array("a","b","c");
array_unshift($arr,"");
unset($arr[0]);
print_r($arr);https://stackoverflow.com/questions/24972225
复制相似问题