将mysql查询存储到php变量后发出未定义的变量

时间:2016-02-10 08:41:13

标签: php mysql arrays

我的php脚本有问题。我试图将mysql查询存储到php变量中,然后将结果转换为字符串。它似乎在循环中完成工作,但在我的脚本结束时,我有一个错误:

内部错误 -

  

注意:未定义的变量:结果

我想传递变量$ data的全部内容。 你知道我做错了什么吗?

这里是我的php脚本

<?php
if (isset($_GET['data']) && $_GET['data']) {
$SelectDataFromRunTable="Select Reference, Variant, HGVSVar FROM run29012016";
$QueryResult=mysqli_query($conn,$SelectDataFromRunTable);
while($data = mysqli_fetch_array($QueryResult,MYSQLI_BOTH)){
print_r($data);
$data=implode(" ",$data);
}//end of while
$NameChecker='astringtest';
$options = array('features' => SOAP_SINGLE_ELEMENT_ARRAYS);

    $client = new SoapClient($URL, $options);
try {
   $result = $client->submitBatchJob(array('data'=>$data, 'process'=>$NameChecker))
                  ->submitBatchJobResult;

    } catch (Exception $e) {
        echo $e->getMessage();
    }


print_r($result);

mysqli_close($conn);
}
?>

3 个答案:

答案 0 :(得分:0)

您需要在顶级默认定义$result,如:

<?php
if (isset($_GET['data']) && $_GET['data']) 
{
    $result = array(); // ADD THIS
    $SelectDataFromRunTable="Select Reference, Variant, HGVSVar FROM run29012016";
    $QueryResult=mysqli_query($conn,$SelectDataFromRunTable);
    while($data = mysqli_fetch_array($QueryResult,MYSQLI_BOTH))
    {
        print_r($data);
        $data=implode(" ",$data);
    }//end of while
    $NameChecker='astringtest';
    $options = array('features' => SOAP_SINGLE_ELEMENT_ARRAYS);

    $client = new SoapClient($URL, $options);
    try 
    {
       $result = $client->submitBatchJob(array('data'=>$data, 'process'=>$NameChecker))
                      ->submitBatchJobResult;

    } 
    catch (Exception $e) 
    {
        echo $e->getMessage();
    }

    print_r($result);

    mysqli_close($conn);
}
?>

我改变了什么?

我默认添加$result = array();

答案 1 :(得分:0)

while($data = mysqli_fetch_array($QueryResult,MYSQLI_BOTH)){
  $data = implode(" ",$data);
}

这不起作用,因为你用每个循环覆盖$ data:

while($data = mysqli_fetch_array(...))将评估您的数据集中有多少行,直到最后。最后一个赋值是$data = null(例如,当你到达结果集的末尾时),你将离开while循环。

您可以做的是,将数据存储到另一个变量中,例如

$soap_data = "";
while($data = mysqli_fetch_array($QueryResult,MYSQLI_BOTH)){
  $soap_data .= " " . implode(" ",$data);
}

//...

$result = $client->submitBatchJob(array('data'=>$soap_data, 'process'=>$NameChecker))
                  ->submitBatchJobResult;

此外,devpro所说的,包含变量的默认值总是更好。

答案 2 :(得分:0)

您正在尝试访问定义此var之外的$result

试试这个:

try {

  $result = $client->submitBatchJob(array('data'=>$data,    'process'=>$NameChecker))
              ->submitBatchJobResult;
  print_r($result);

} catch (Exception $e) {
    echo $e->getMessage();
}