要获得这样的数组array("123","456","789");
,我使用代码:
$Regids = mysql_query("SELECT regid FROM $tabel WHERE active = '1'");
while($row = mysql_fetch_array($Regids))
{
$result_array[] = "\"".$row['regid']."\"";
}
$regIDs = implode(',', $result_array);
$registrationIDs = array($regIDs); // array("123","456","789");
但我希望PHP / mySQL有更简单/更快的解决方案吗?
答案 0 :(得分:0)
试试这个..在查询中使用Group concat ......
$Regids = mysql_fetch_array(mysql_query("SELECT GROUP_CONCAT(regid) as regids FROM $tabel WHERE active = '1'"));
echo $Regids[0]['regids']; // 123,456,789
获得结果“123”,“456”,“789”试试这个
$Regids = mysql_fetch_array(mysql_query("SELECT GROUP_CONCAT('\"',CONCAT(regid),'\"') as regids FROM $tabel WHERE active = '1'"));
echo $Regids[0]['regids']; // "123","456","789"
答案 1 :(得分:0)
我怀疑你的代码会产生你想要的结果。
// assuming the this query produces 123,456,789
$Regids = mysql_query("SELECT regid FROM $tabel WHERE active = '1'");
// $row contains: array("123")
while($row = mysql_fetch_array($Regids))
{
$result_array[] = "\"".$row['regid']."\"";
}
// $result_array now contains: array("\"123\"", "\"456\"", "\"798\"");
$regIDs = implode(',', $result_array);
// $regIDS now contains a single string: "\"123\",\"456\",\"798\"";
$registrationIDs = array($regIDs);
// registrationIDs now is an array containing a single string: array("\"123\",\"456\",\"798\"");
如果你真的需要一个如下所示的数组:array("123","456","789");
它更简单。
$Regids = mysql_query("SELECT regid FROM $tabel WHERE active = '1'");
while($row = mysql_fetch_array($Regids))
$registrationIDs[] = $row['regid'];
就是这样。
如果您的mysql结果包含整数而不是字符串,您可以将其转换为:
$Regids = mysql_query("SELECT regid FROM $tabel WHERE active = '1'");
while($row = mysql_fetch_array($Regids))
$registrationIDs[] = strval($row['regid']);
另外,请记住,mysql_*
函数已被弃用。不要使用它来启动新代码,并计划将现有代码移植到mysqli_*
或PDO。
答案 2 :(得分:0)
您可以使用PDO实施。乍一看,它可能更难理解,但是一旦你习惯了它,它就会显示出非常强大和方便(恕我直言!一年前我切换到它,我喜欢它)!
对于您的示例,PDO实现将是这样的:
/*CONNECT TO DB, FIRST. $dbh contains a handler to the current DB connection*/
$stmt = $dbh->prepare("SELECT regid FROM table WHERE active = '1'");
$stmt->execute();
$Regids = $stmt->fetchAll(PDO::FETCH_COLUMN,0);
您可以指定许多格式选项,例如
PDO :: FETCH_COLUMN
PDO :: FETCH_ASSOC
以及更多...这些选项将允许您根据需要格式化数组。正如你所看到的,我只用了3行就得到了结果。
修改强>
注意:在将PHP变量插入Query之前,您不会转义它们,并且您的代码可能会遭受SQL INJECTION。小心!!这是一个simple guide来阻止它。 (在我的代码中,为了清楚起见,我通过仅使用表名而不是$ table来避免这个问题,只是为了显示如何获得你想要的结果。)