【发布时间】:2015-04-30 05:25:48
【问题描述】:
团队,我正在尝试在 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']);
?>
【问题讨论】:
-
请用注释标记第 19 行
-
工作。没有那条线,它真的插入到了 mysql 中。谢谢你的帮助,但是你能告诉我为什么它不需要在这里执行吗?这是 php 文档中描述的内容:php.net/manual/en/mysqli-stmt.execute.php
-
它应该需要执行调用,正如我所说的,请在第 19 行标记注释
-
用
if(!$stmt->execute()){trigger_error("there was an error....".$mysqli->error, E_USER_WARNING);}替换$stmt->execute();,看看为什么会失败。还要确保你已经开始了会话。 -
$_SESSION['url']和$_SESSION['nomesite']是字符串吗?