首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从循环中插入值

从循环中插入值
EN

Stack Overflow用户
提问于 2009-03-01 16:58:47
回答 4查看 264关注 0票数 0
代码语言:javascript
复制
$sql1 = "SELECT SIDno FROM class WHERE SubjID='$SubjName' and SecID='$SecName'";
$result1 = mysql_query($sql1);
while ($row1 = mysql_fetch_assoc($result1)){
    $IDno = $row1["SIDno"];
    $sql2="INSERT INTO registered ( ServiceID, IDno, Stype)VALUES('$RecCode','$IDno','$Stype')";
}

这是我的代码。它的工作,但它只插入一个数据到数据库中。如何才能从循环中插入所有可能的数据。有谁可以帮我?

EN

回答 4

Stack Overflow用户

发布于 2009-03-01 17:02:41

您可能是在循环之后执行查询,所以只插入最后一条记录。

尝试在循环末尾执行插入查询:

代码语言:javascript
复制
while ($row1 = mysql_fetch_assoc($result1)) {
    $IDno = $row1["SIDno"];
    $sql2 = "INSERT INTO registered (ServiceID, IDno, Stype) VALUES ('".mysql_real_escape_string($RecCode)."', '".mysql_real_escape_string($IDno)."', '".mysql_real_escape_string($Stype)."')";
    mysql_query($sql2);
}

或者,首先收集所有数据,然后执行一次查询以插入所有记录:

代码语言:javascript
复制
$values = array();
while ($row1 = mysql_fetch_assoc($result1)) {
    $IDno = $row1["SIDno"];
    $values[] = "('".mysql_real_escape_string($RecCode)."', '".mysql_real_escape_string($IDno)."', '".mysql_real_escape_string($Stype)."')";
}
if (!empty($values)) {
    $sql2 = "INSERT INTO registered (ServiceID, IDno, Stype) VALUES ".implode(',', $values);
    mysql_query($sql2);
}

但是不要忘记为查询准备好值(参见mysql_real_escape_string function)。

票数 3
EN

Stack Overflow用户

发布于 2009-03-01 17:11:24

如果您不打算对获取的数据执行任何操作,则可以使用INSERT。选择..语句。

示例:

代码语言:javascript
复制
INSERT INTO registered (ServiceID, IDno, Stype)
SELECT field1, field2, field3
FROM class
WHERE SubjID='$SubjName' and SecID='$SecName'"

就像我之前写的,逃离你的变量...

票数 3
EN

Stack Overflow用户

发布于 2009-03-01 17:05:33

注意:请确保使用对变量进行转义。

代码语言:javascript
复制
$sql1 = "SELECT SIDno FROM class WHERE SubjID='$SubjName' and SecID='$SecName'";
$result1 = mysql_query($sql1);

$sql2 = "INSERT INTO registered (ServiceID, IDno, Stype) VALUES ";

$addComma = false;
while ($row1 = mysql_fetch_assoc($result1)){
    $IDno = $row1["SIDno"];
    $sql2 .= ($addComma ? ", " : "") . "('$RecCode','$IDno','$Stype')";
    $addComma = true;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/600099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档