我的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);
}
?>
答案 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();
}