我在一个例子中有这个数组,如何从数据库中查询获得相同的结果?,我需要替换数据库值的值。
$data = array(
array(
'qty' => 1,
'Price' => 1.00,
'total' => 1.00
),
array(
'qty' => 2,
'Price' => 1.00,
'total' => 2.00
),
array(
'qty' => 3,
'Price' => 1.00,
'total' => 3.00
)
);
然后在示例中使用nusoap lib
foreach($data as $concept) {
$par['Concepts'][] = new soapval('Concept', 'Concept', $concept);
}
所以我需要调用查询:
$query_data_cot = mysql_query("SELECT * FROM data WHERE id='1'");
while($data_quote=mysql_fetch_array($query_data_cot)){
$conceptosDatos[]["qty"]=$data_quote['qty'];
$conceptosDatos[]["Price"]=$data_quote['price'];
$conceptosDatos[]["total"]=$data_quote['total'];
}
但是当我这样做时我得到了一个错误
Error: Array ( [faultcode] => soap:Server [faultstring] => Server was unable to process request. --->
谢谢
答案 0 :(得分:0)
尝试此while($data_quote=mysql_fetch_array($query_data_cot , MYSQL_ASSOC ))
,因为您正在检索$data
作为关联数组。
答案 1 :(得分:0)
每次使用$conceptosDatos[]...
时,[]
都会创建一个新的子阵列。所以你的结果将是这样的
array(
array('qty' => ..),
array('Price' => ..),
array('total' => ...),
array('qty' => ..),
array('Price' => ..),
array('total' => ...),
...
)
相反,你需要为整个集合创建一个新的子阵列,所以使用类似这样的东西
$query_data_cot = mysql_query("SELECT qty, price, total FROM data WHERE id='1'");
while($data_quote=mysql_fetch_assoc($query_data_cot)){
$conceptosDatos[] = $data_quote;
}
当然你也可以这样做
$query_data_cot = mysql_query("SELECT qty, price, total FROM data WHERE id='1'");
while($data_quote=mysql_fetch_assoc($query_data_cot)){
$conceptosDatos[] = array(
'qty' => $data_quote['qty'],
'Price' => $data_quote['price'],
'total' => $data_quote['total'],
);
}
但是,如果你要复制整个阵列,为什么要写每个字段?
如果您需要使用不同的名称(如示例price
和Price
中所示),您可以更改数据库架构或在查询中使用别名,为您提供以下代码:
$query_data_cot = mysql_query("SELECT qty, price AS Price, total FROM data WHERE id='1'");
while($data_quote=mysql_fetch_assoc($query_data_cot)){
$conceptosDatos[] = $data_quote;
}
这样做的好处是,如果您希望将来修改代码,您只需要修改查询(并且可能将此逻辑封装在一个函数中) - 这样对未来的工作就会减少。
顺便说一下,您是否在所有mysql_*
方法的网站上看到了手册中的大红框?它已被弃用,PDO以及MySQLi是更好的选择。 This helps decide使用什么。
答案 2 :(得分:0)
循环中的每个赋值行都在创建$conceptDatos
数组的新元素,而不是填充同一元素的不同元素。所以你的数组看起来像:
array(
array('qty' => 1),
array('Price' => 1.0),
array('total' => 1.0),
array('qty' => 2),
array('Price' => 1.0),
array('total' => 1.0),
...
)
你的循环应该是:
while($data_quote=mysql_fetch_array($query_data_cot)){
$conceptDatos[] = array(
'qty' => $data_quote['qty'],
'Price' => $data_quote['price'],
'total' => $data_quote['total']
);
}