2016-02-24 42 views
2

我在这里有一个非常非常奇怪的问题。我有数据在php中的数组。我想要为数组查询数据库并获取结果的每个项目。它只显示我具体的结果,而不是一切。阵列打印数据正确,但查询只显示一半

我的代码:

foreach($my as $k=> $v){ 
    //echo "Key: ". $k . " Value: " . $v . "<br/>"; 
    $sql2 = "SELECT column10 FROM `table` WHERE column1 = '$v' "; 
    $res2 = mysql_command($sql2); 
    echo $sql2 . "<br/>"; 
    $rowA = mysql_fetch_assoc($res2); 
    //echo "<strong>Alternative: </strong>" . $v. "<strong> Auto Alternative: </strong>" . $rowA['column10'] . "<br/>"; 

} 
echo '</table>'; 
echo "<pre>"; 
print_r($my); 
echo "</pre>"; 

在浏览器中的结果,如果我回应查询和密钥:和值是这样的:

SELECT column10 FROM `table` WHERE column1 = 'Villetta La Canoa' 
SELECT column10 FROM `table` WHERE column1 = ' Casa Immerso nel Verde' 
SELECT column10 FROM `table` WHERE column1 = ' La Rosetta' 
SELECT column10 FROM `table` WHERE column1 = 'Agriturismo La Nonna' 
SELECT column10 FROM `table` WHERE column1 = ' Villetta Cassiopeia' 
SELECT column10 FROM `table` WHERE column1 = ' La Rosetta' 
SELECT column10 FROM `table` WHERE column1 = 'Ca Gianca 2' 
SELECT column10 FROM `table` WHERE column1 = ' Villetta Teresa' 
SELECT column10 FROM `table` WHERE column1 = ' Appartamento Pinamare' 
SELECT column10 FROM `table` WHERE column1 = ' Casa del Principe' 
SELECT column10 FROM `table` WHERE column1 = 'Ca Gianca 2' 
SELECT column10 FROM `table` WHERE column1 = ' Villetta Teresa' 
SELECT column10 FROM `table` WHERE column1 = ' Appartamento Pinamare' 
SELECT column10 FROM `table` WHERE column1 = ' Casa del Principe' 
SELECT column10 FROM `table` WHERE column1 = 'Ca Gianca 2' 
SELECT column10 FROM `table` WHERE column1 = ' Villetta Teresa' 
SELECT column10 FROM `table` WHERE column1 = ' Appartamento Pinamare' 
SELECT column10 FROM `table` WHERE column1 = ' Casa del Principe' 

的关键价值是:

Key: 0 Value: Villetta La Canoa 
Key: 1 Value: Casa Immerso nel Verde 
Key: 2 Value: La Rosetta 
Key: 3 Value: Agriturismo La Nonna 
Key: 4 Value: Villetta Cassiopeia 
Key: 5 Value: La Rosetta 
Key: 6 Value: Ca Gianca 2 
Key: 7 Value: Villetta Teresa 
Key: 8 Value: Appartamento Pinamare 
Key: 9 Value: Casa del Principe 
Key: 10 Value: Ca Gianca 2 
Key: 11 Value: Villetta Teresa 
Key: 12 Value: Appartamento Pinamare 
Key: 13 Value: Casa del Principe 
Key: 14 Value: Ca Gianca 2 
Key: 15 Value: Villetta Teresa 
Key: 16 Value: Appartamento Pinamare 
Key: 17 Value: Casa del Principe 

我得到的是:

Alternative: Villetta La Canoa Auto Alternative: Villa Ronchi, Casa Ciserai, Villino Torretta, Casa Bianca 
Alternative: Casa Immerso nel Verde Auto Alternative: 
Alternative: La Rosetta Auto Alternative: 
Alternative: Agriturismo La Nonna Auto Alternative: Agriturismo Antico Granaio, Casa Ciserai, Villa Ronchi, La Rosetta 
Alternative: Villetta Cassiopeia Auto Alternative: 
Alternative: La Rosetta Auto Alternative: 
Alternative: Ca Gianca 2 Auto Alternative: Ca Gianca 1, La Vigna 2, Villetta Teresa 
Alternative: Villetta Teresa Auto Alternative: 
Alternative: Appartamento Pinamare Auto Alternative: 
Alternative: Casa del Principe Auto Alternative: 
Alternative: Ca Gianca 2 Auto Alternative: Ca Gianca 1, La Vigna 2, Villetta Teresa 
Alternative: Villetta Teresa Auto Alternative: 
Alternative: Appartamento Pinamare Auto Alternative: 
Alternative: Casa del Principe Auto Alternative: 
Alternative: Ca Gianca 2 Auto Alternative: Ca Gianca 1, La Vigna 2, Villetta Teresa 
Alternative: Villetta Teresa Auto Alternative: 
Alternative: Appartamento Pinamare Auto Alternative: 
Alternative: Casa del Principe Auto Alternative: 

任何人都可以解释什么是错的?

+0

您好,首先提示的全部cople的,'mysql_ *'功能过时,你应该改变为'mysqli'或''PDO,你应该给DB列更多descripive名称,它可以是一个噩梦保持或理解该代码:) – Asur

+0

它显示你'SELECT column10',而不是'SELECT *'? – devpro

+2

'mysql_command'到底是什么? –

回答

4

从我的角度来看,您可能需要修剪$ v以确保字符串的开头和结尾处没有空格。

foreach($my as $k=> $v){ 
    $v = trim($v); 

此外,您应该尝试'LIKE'运算符而不是'='。也许把'%'加到$ v。

$sql2 = "SELECT column10 FROM `table` WHERE column1 LIKE '%{$v}%'"; 
+0

我会在2分钟内接受..感谢很多。 – BRG

+0

不要介意这个意见,但这只是一个解决方法,请你的眼睛看到你的代码修复。问题是,为什么那里有额外的空间呢?如果你不应该存储额外的空间,那么你为什么要存储它,然后在最后修剪它?有一天会导致意想不到的结果。修剪格式不正确的字符串只是为了让事情发展而已,这不是一个好的设计解决方案。修复错误地在数据库中存储额外空间的代码。 –

+0

@BRG Hanky说这是对你的代码的快速解决方案。听取他的建议,并尝试从源头中删除空间。 – besciualex

3

什么是mysql_command?我敢肯定它的一个错字,你的意思mysql_query(唉甚至认为: - /)

而且你不明白,因为像这样的

SELECT column10 FROM `table` WHERE column1 = ' Casa Immerso nel Verde' 
              ^

一些字符串后面的额外空间用于一些结果你样本数据证实了这一点。你没有选择的唯一结果就是那些有额外空间的结果。