将 php 数组值插入数据库

Insert php array value into database

我正在开发这个标签系统。我正在尝试将主题标签词放入新行的数据库中。对于每个标签词,我都需要将其插入到新行中。 下面是我的 php 行代码...

$string = filter_var("#hello #world", FILTER_SANITIZE_STRING);
preg_match_all('/(?<!\w)#\w+/', $string, $matches);

foreach ($matches as $key => $value) {
    $stmt = $mysqli->prepare("INSERT INTO hash_tag (tagged_word) VALUES (?)");
    $stmt->bind_param("s", $value);
    $stmt->execute();
}

这样做不会向数据库中插入任何内容,但是当我将 $value 替换为 $value[0] 时,它会输入第一个 #hello.

我想将 #hello#world 作为新行输入到数据库中。 提前致谢。

请更改 foreach 循环:

foreach ($matches as $key => $value) {

foreach ($matches[0] as $key => $value) {

因为,$matches 是一个多维数组,我们正在尝试访问它的第 0 个和第 1 个元素,它们也是数组而不是字符串。

如果我们尝试访问 $matches 的第一个子数组,它将完美运行。

所以,最终的代码是:

<?php
$string = filter_var("#hello #world", FILTER_SANITIZE_STRING);
preg_match_all('/(?<!\w)#\w+/', $string, $matches);

if (isset($matches[0]) && ! empty($matches[0])) {
    foreach ($matches[0] as $key => $value) {
        //echo '<pre>';print_r($key);echo '</pre>';
        //echo '<pre>';print_r($value);echo '</pre>';
        $stmt = $mysqli->prepare("INSERT INTO hash_tag (tagged_word) VALUES (?)");
    $stmt->bind_param("s", $value);
    $stmt->execute();
    }
}