在PHP MySQL中更新表的问题[已关闭]

juzqafwq  于 2023-05-21  发布在  PHP
关注(0)|答案(1)|浏览(122)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

2天前关闭。
Improve this question
我正在尝试使用PHP更新MySQL中的表。
某些行具有相同的索引值,列名为“num”。
我有一个数字数组要更新到一个名为“代码”的列中。
Illustration of the Table
让我们把这个数组命名为$codearr:[100,200,400,300,500,900,1500,150,50,20,1000]。
我想从列表中插入数字一个接一个,一行接一行,其中'num'等于1,通过使用UPDATE命令。
我所有的努力都没有按照列表的顺序插入列表,就像我的例子一样,扭曲了列表的顺序。
我的努力:
我尝试通过创建一个新列,命名为“uniq”,并在其中放置一个随机数,为每行添加一个唯一标识符。
之后,我检索了列'uniq'和列'num'的值列表,并将它们放在单独的数组中。我创建了一个循环,将$codearr中的数字插入到列'code'中,方法是遍历'uniq'中的值数组,并为每个唯一标识符插入一个列表中的数字。
我不知道为什么我的循环是从列表中插入的数字不是按正确的顺序,并希望得到一些帮助。

$codearr=[100,200,400,300,500,900,1500,150,50,20,1000];

$i=0;
while($i<count($codearr))
{
    $stmt = $conn->prepare("UPDATE test SET code = ? WHERE num = 1 AND uniq = ?");
    $stmt->bind_param("is", $codearr[$i], $uniq[$i]);
    $stmt->execute();
    $stmt->close();
    $i++;
}

假设$uniq数组有所有的唯一标识符。目的是在$codearr中按预定顺序插入。

p4tfgftt

p4tfgftt1#

您可以在PHP中使用一个循环,通过在UPDATE语句中使用LIMIT 1来更新num为空的一行。

$codearr = [100,200,400,300,500,900,1500,150,50,20,1000];
$stmt = $conn->prepare("
    UPDATE yourTable 
    SET code = ?
    WHERE num = 1 AND code IS NULL 
    LIMIT 1");
$stmt->bind_param("i", $code);
foreach ($codearr as $code) {
    $stmt->execute();
}

每次迭代将任意选择一个未填充的行并更新它。

相关问题