0

我已经为这个问题扯了几天的头发,所以任何有用的建议都将不胜感激。调用以下函数不会返回任何内容。POST 值已设置(它们使用 echo 打印),数据库让我可以使用其他功能进行更新和提取。我错过了什么?

哦,是的,所有的值都是字符串。

$stmt = $db->prepare("INSERT INTO content_page (name, layout, page_id) VALUES (?,?,?)");    
$stmt->bind_param("sss", $_POST['name'], $_POST['layout'], $_POST['page_id']);
$stmt->execute();
$stmt->close();
4

4 回答 4

1

乍一看,这段代码没有任何问题(如果你确实在使用 mysqli)。因此,了解问题所在的唯一方法是获取错误消息。

在连接之前添加此行

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

并确保您可以看到 PHP 错误

于 2013-10-23T14:58:53.993 回答
0

试试这个

$sql = "INSERT INTO content_page (name, layout, page_id) VALUES (?,?,?)";
if (!$stmt = $db->prepare($sql)) {
    die($db->error);
}
$stmt->bind_param("ssi", $_POST['name'], $_POST['layout'], $_POST['page_id']);
if (!$stmt->execute()) {
    die($stmt->error);
}
$stmt->close();

或者,如您所说,如果您的所有值都是字符串(假设它们在您的数据库中被定义为 varchars/类似的东西),您仍然可以bind_param("sss"...

于 2013-10-23T15:01:54.007 回答
-1

不是page_id整数吗?由于提问者首先将问题标记为PDO,因此这里是PDO版本:

$stmt = $db->prepare("INSERT INTO content_page (name, layout, page_id) VALUES (:name,:layout,:pid)");
$sth->bindParam(':name', $_POST['name'], PDO::PARAM_STR);
$sth->bindParam(':layout', $_POST['layout'], PDO::PARAM_STR);
$sth->bindParam(':pid', $_POST['page_id'], PDO::PARAM_INT);
$stmt->execute();

或(MySQLi):

$stmt = $db->prepare("INSERT INTO content_page (name, layout, page_id) VALUES (?,?,?)");
$stmt->bind_param("ssi", $_POST['name'], $_POST['layout'], $_POST['page_id']);
$stmt->execute();

或 (PDO) :

$stmt = $db->prepare("INSERT INTO content_page (name, layout, page_id) VALUES (?,?,?)");
$stmt->execute(array($_POST['name'], $_POST['layout'], $_POST['page_id']));
于 2013-10-23T14:55:25.620 回答
-5

这个给你:

$name = $_POST['layout'];
$layout = $_POST['layout'];
$page_id= $_POST['page_id'];

$stmt = $db->prepare("INSERT INTO content_page (name, layout, page_id) VALUES ('".$name."','".$layout."','".$page_id."')");  
于 2013-10-23T15:01:45.183 回答