在MySQLi查询的fetch_assoc方法上使用array_map

时间:2013-04-07 22:53:06

标签: php mysql mysqli

说我有以下代码:

$mysqli=new MySQLi('localhost', 'blah', 'blah', 'blah');
$articles=$mysqli->query("SELECT * FROM `articles`");
$articles_row=array_map('stripslashes', $articles->fetch_assoc());

我会收到一条消息,说“参数2需要一个数组”。

以这种方式使用array_map被认为是不好的做法,为什么?为什么会出错?

2 个答案:

答案 0 :(得分:0)

尝试此操作并记住存储数据。

$mysqli=new MySQLi('localhost', 'blah', 'blah', 'blah');
if ($result=$mysqli->query("SELECT * FROM `articles`")){
  if ($result->num_rows >= 1){
    $articles = array() ; //Create a storage
    while($article = $result->fetch_assoc()){
      $articles[] = array_map("stripslashes", $article) ; //Call the function for each row
    }
  } else
    echo "No rows" ;
} else 
  echo "Fail query" ;

答案 1 :(得分:0)

您不应对数据库中的数据应用任何条带 你不应该首先添加它们。

您似乎正在使用预备语句,这使得转义无用。从而获得数据库中的转义数据(这是错误的)。

因此,不要对通过预准备语句添加的数据使用$mysqli->real_escape_string(),并且不需要任何striplashes。