stmt->execute()(数组到字符串转换错误)

Mar*_*aes 1 php mysqli insert

团队,我正在尝试在 mysql 数据库中插入一个寄存器,并且在使用 mysqli 时出现错误 execute()

注意:C:\xampp\htdocs\InsereSite.php 中第 19 行的数组到字符串的转换 Call Stack execute () ..\InsereSite.php:19

我不确定为什么它会尝试进行这种转换,但无论如何,这是代码。请告诉我更多的数据。

<?php
function InsertSiteDb($site_novo){

    if(!isset($_POST['sites'])) {
        echo " Voce precisa estar logado para acessar essa pagina";
        header('Location:sellsite_login.html');

    }else{

        $mysqli = new mysqli('localhost', 'root', '', 'sellsites');


        $query = "INSERT INTO pages (url,file,public,price) VALUES (?,?,0,0)";
        $stmt = $mysqli->prepare($query);

        $stmt->bind_param('ss',$_SESSION['url'],$_SESSION['nomesite']);
        //$stmt->execute();

        $stmt->close();


    }


}
?>
Run Code Online (Sandbox Code Playgroud)

这里是调用 InsertSiteDb 的地方:

<?php

    session_start();
    $sites = $_POST['sites']; //o que foi digitado no form será postado
    var_dump($sites);
    $sites = explode(";",$sites);


foreach ($sites as $site) {
        $recebesite_html[] = file_get_contents($site); 
}                                                   

$contador = 0;

 foreach ($recebesite_html as $site_novo){
    $pos = strpos($site_novo, "<title>"); 
    $pos_final = strpos($site_novo,"</title>");
    echo $pos.$pos_final;

    $pos += 7; 
    $tamanho = $pos_final -$pos;

    $nome=substr($site_novo,$pos,$tamanho);
    $_SESSION['nomesite'] = $nome;
    $_SESSION['url'] = $sites;
    $retorno = file_put_contents($nome.".html",$site_novo);
    echo $retorno;
    var_dump($site);
 }

include ("InsereSite.php");
$registro_site=InsertSiteDb($_SESSION['nomesite']);


?>
Run Code Online (Sandbox Code Playgroud)

Mar*_*tin 5

1) 来自 Fred-ii-

     if(!$stmt->execute()){
trigger_error("there was an error.:".$mysqli->error, E_USER_WARNING);
    }
Run Code Online (Sandbox Code Playgroud)

2) 问题在于$_SESSION['url']or$_SESSION['nomesite']是一个数组而不是一个字符串。在您对状态的调用上方添加一个代码块$query =

if (is_array($_SESSION['url']) || is_array($_SESSION['nomesite'])){
print "Data is an array:<br>";
var_dump($_SESSION);
} 
Run Code Online (Sandbox Code Playgroud)

错误“数组到字符串转换”是因为这两个 $_SESSION 值之一是数组值,而 PHP 正在尝试将这些数组值放入方法中定义的字符串中bind_param

更新:

查看更新后的代码视图,$sites稍后使用的变量$_SESSION['url']显然是一个数组,因此请查看使用数组中的一个值或内爆数组或使用类似方法将其转换为字符串。