2014-01-29 31 views
0

我需要一些帮助,这代码:MySqlQuery使用阵列

<?php 
include("config.php"); 

$Servico=implode(" ", $_POST['service']); 

$con=mysqli_connect("","","",""); //I hid the info here 

if (mysqli_connect_errno()) 
    { 
     echo "Falhou a conexão ao MySQL: " . mysqli_connect_error(); 
    } 

$to = mysqli_query($con,"SELECT Email FROM utilizadores WHERE Nome LIKE '%$Servico%'"); 
$row = mysqli_fetch_assoc($to); 
$row['Email']; 
foreach ($row as $destino) 
    { 
     echo $destino; 
    } 

?> 

该阵列在其他代码创建的,通过选择存在于数据库中的一个或多个用户。然后它会创建与所选用户一起的阵列。

当我的阵列只有一个名字,它可以正确检索电子邮件,但是当我有多个,它给了我:

Warning: Invalid argument supplied for foreach() in /home/a5301436/public_html/criartarefa.php on line 49 

有人能帮助我吗?

+0

'$ Row'只包含一个元素,为什么你需要一个循环? – Barmar

+0

如果查询未找到任何匹配的行,则会发生该错误。 'mysql_fetch_assoc'返回'false'而不是数组。 – Barmar

+0

我正在使用Krish R的代码。如果数组包含一个用户,我会收到电子邮件,但如果是两个或更多,则显示空白页。 –

回答

0

以下是使用IN的方法。

$con=mysqli_connect("","","",""); //I hid the info here 

if (mysqli_connect_errno()) 
{ 
    echo "Falhou a conexão ao MySQL: " . mysqli_connect_error(); 
} 

$Servico=implode(", ", array_map(function($s) use ($con) { 
    return "'" . mysqli_real_escape_string($con, $s) . "'"; 
    }, $_POST['service'])); 

$to = mysqli_query($con,"SELECT Email FROM utilizadores WHERE Nome IN ($Servico)"); 

while ($row = mysqli_fetch_assoc($to)){ 
    echo $row['Email']; 
} 
+0

它缺少一些代码吗?它给我错误},$ _POST ['服务']); –

+0

对不起,缺少括号。现在修复。 – Barmar

+0

“解析错误:语法错误,意外的T_FUNCTION,期待')'在44行上的/home/a5301436/public_html/criartarefa.php” –