所以任务是:
-
- 执行类似Select*from table的查询
-
- 取一些单元格值
-
- 将此值插入到新查询中
到目前为止我有什么:
$Conn=odbc_connect("…");$Result=odbc_exec("选择…");while($r=odbc_fetch_array($Result))//在表格中显示结果
这里看起来我应该使用r
数组并插入像一样的数据
$var = r['some_field'];
$query = 'Select * from table where some_field = {$var}";
但是,我如何用值填充这个数组,以及如何使它在while循环之外可用?这里我使用的是odbc,但没关系,我需要算法。谢谢
整个代码看起来像:
<?php
$data = array();
$state = 'false';
if($_REQUEST['user_action']=='')
{
$Conn = odbc_connect("...");
$data = array();
if($_REQUEST['name']!='')
{
$Result = odbc_exec($Conn, "select ...");
//Showing result table
while($r = odbc_fetch_array(Result))
{
array_push($data, $r['cardgroup']);
$state = 'true';
}
// print_r($data); WORKS;
}
}
if ($_REQUEST['user_action'] == 'action1')
{
//I need to use $data HERE. Doesn't work
// $state = 'false' here...
}
?>
循环时定义外部数组
$data = array();//defining
while($r = odbc_fetch_array($Result))
循环时在内部使用array_push()
array_push($data, $r['some_field']);
然后尝试在循环外打印完整数据的数组
print_r($data);
更新
将$data = array();
放在第一个IF
语句的顶部。试试这个代码:
$data = array();//at top
if($_REQUEST['user_action']=='')
{
$Conn = odbc_connect("...");
if($_REQUEST['name']!='')
{
$Result = odbc_exec($Conn, "select ...");
//Showing result table
while($r = odbc_fetch_array(Result))
{
array_push($data, $r['cardgroup']);
}
// print_r($data); WORKS;
}
}
if ($_REQUEST['user_action'] == 'action1')
{
//print_r($data) works here also
}
尝试这样的方法将数据存储在数组中
$allrows = array();
while($r = odbc_fetch_array( $result )){
$allrows[] = $r;
}
使用foreach循环打印或根据您的选择使用
foreach($allrows as $singlerow) {
//use it as you want, for insert/update or print all key value like this
foreach($singlerow as $key => $value) {
//echo $key . '=='. $value;
}
}
你可以试试这个,因为我理解你的查询,希望这是你的答案
$arr ='';
while($row = odbc_fetch_array($Result)) {
$arr .= ''''.$row['some_field'].''',';
}
$arr = trim($arr, ",");
$query = "SELECT * from table where some_field IN ($arr)";
您的所有任务都可以在单个查询中完成
INSERT INTO table2 (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM table1