我想知道如何将我的数组转换为字符串
$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"]
答案 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();
有关如何使用mysqli
和pdo
对象,方法和属性的任何疑问都可以在php.net文档中找到(上面链接)。
当然,这只是基于您的明显需求的更好实践的建议,但您仍然可以使用implode
函数来实现您的字符串。
答案 1 :(得分:2)
看一下PHP implode
函数:
http://php.net/manual/en/function.implode.php
例如,这会将数组转换为字符串,用逗号分隔每个元素:
$string = implode(',', $array);