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

时间:2015-02-27 13:19:19

标签: php mysqli insert

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

  

注意:C:\ xampp \ htdocs \ InsereSite.php中的数组到字符串转换   第19行调用堆栈执行().. \ 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();


    }


}
?>

这是调用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']);


?>

1 个答案:

答案 0 :(得分:4)

1)来自Fred-ii-

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

2)问题是$_SESSION['url']$_SESSION['nomesite']是数组而不是字符串。将代码块 ABOVE 添加到$query =调用状态:

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

错误&#34;数组到字符串转换&#34;这是因为这两个$ _SESSION值中的一个是数组值,并且PHP正试图将这些数组值拟合为bind_param方法中定义的字符串。

更新:

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