转换数组取字符串

时间:2015-08-28 13:07:13

标签: php mysql arrays string

我想知道如何将我的数组转换为字符串

   $formats = $_POST['formats'];
      $topics = $_POST['topics'];

例如,如果我回应上面的内容,它只是打印数组。我希望它将数组显示为字符串,以便我可以在下面使用它:

 $resources = "select * from resources where stage LIKE '%".$stage."%' and formats LIKE '%".$formats."%' and topics LIKE '%".$topics."%'";

我被建议做这样的事情$formats = $_POST['formats'][0]; 但我想将整个数组输出为一个字符串,"idea generation, business"等同于["idea generation", business"]

2 个答案:

答案 0 :(得分:3)

由于无法确定您正在使用哪个数据库来进行查询,因此我建议您使用预处理语句构建查询字符串,并对您的值进行paremeterize PDO对象,具体取决于您在PHP.net documentation中就该主题所阅读的内容。

  

将PHP变量绑定到相应的命名或问号   占位符在用于准备的SQL语句中   声明。与PDOStatement :: bindValue()不同,变量绑定为   参考,只会在当时进行评估   调用PDOStatement :: execute()。

正如您所看到的那样,在访问它们之前,您不必费心将数组变量转换为字符串,另外,您为查询语句授予安全性。

所以,不是implode字符串,你会有这样的东西:

<?php
    /* Execute a prepared statement by binding PHP variables */
    $stage = $_POST['stage'];
    $formats = $_POST['formats'];
    $topics = $_POST['topics'];
    $stmt = $db->prepare('select * from resources where stage LIKE % :stage % and formats LIKE % :formats % and topics LIKE % :topics %');
    $stmt->bindParam(':stage', $stage);
    $stmt->bindParam(':formats', $formats);
    $stmt->bindParam(':topics', $topics);
    $stmt->execute();
?>

编辑:当你更新了你正在使用的MySQLi时,它将没有什么不同。

$stmt = $mysqli_db->prepare('select * from resources where stage LIKE % ? % and formats LIKE % ? % and topics LIKE % ? %');
// assuming all your params are strings
$stmt->bind_param('sss', $stage, $formats, $topics);
$stmt->execute();

使用mysqli,因为它是一个无缓冲的sql查询处理程序,如果你用$stmt->store_result();

循环同步执行,你应该存储你的结果

有关如何使用mysqlipdo对象,方法和属性的任何疑问都可以在php.net文档中找到(上面链接)。

当然,这只是基于您的明显需求的更好实践的建议,但您仍然可以使用implode函数来实现您的字符串。

答案 1 :(得分:2)

看一下PHP implode函数:

http://php.net/manual/en/function.implode.php

例如,这会将数组转换为字符串,用逗号分隔每个元素:

$string = implode(',', $array);