我已经在这个问题上扯了几天头发,所以任何有用的建议都会受到赞赏。调用以下函数不会返回任何内容。设置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();
答案 0 :(得分:1)
乍一看,这段代码没有任何问题(如果您确实使用了mysqli)。因此,唯一方式来了解出现问题的方法是获取错误消息。
在连接
之前添加此行mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
并确保您可以看到PHP错误
答案 1 :(得分: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"...
答案 2 :(得分:-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']));
答案 3 :(得分:-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."')");