MySQL语句返回true但不插入

时间:2018-06-10 20:28:45

标签: php mysql

我有以下

$bd = new mysqli("localhost","root","","bd");

$title = $_POST['title'];
$text = $_POST['content'];
$id = intval($_SESSION['id']);

$sql = "INSERT INTO `perguntas` (per_number, per_title, per_text, per_usr_id) VALUES (1, ?, ?, ?)";
$query = $bd->prepare($sql);
if ($query) {
    $query->bind_param("ssi", $title, $text, $id);
    $query->execute();
    $query->close();
}
else {
    die("Something went wrong");
}
$bd->close();

基本上$query返回true但不会插入数据库。我试图使用查询而不是语句,我遇到了同样的问题。不确定导致它的原因。 我已经确认了所有变量并且它们包含文本,我只省略了isset()。 我甚至尝试过使用这个查询:

$sql = "INSERT INTO `perguntas` (per_number, per_title, per_text, per_usr_id) VALUES (1, 'Test', 'test', 1)";

所有表数据类型都是正确的。 per_number为int,per_title为varchat,per_text为文本,per_usr_id为int。

table

1 个答案:

答案 0 :(得分:0)

1)我认为您已经忘记开始会话:session_start()因为我发现您试图让$_SESSION['id']在没有启动的情况下无法检索。

2)也许标题或内容也可能是空字符串。 因此,请确保您正确地从表单传递值。


运行execute方法后检查您的问题。

检查此代码:

<?php
session_start(); 

$db = new mysqli("localhost","root","","bd");

$title = trim($_POST['title']);
$text = trim($_POST['content']);
$id = $_SESSION['id'];

if (!$title) throw new Exception('Incorrect or empty title');
if (!$text) throw new Exception('Incorrect or empty text');
if (!is_numeric($id)) throw new Exception('Non numeric id');

$query = 'INSERT INTO `perguntas` 
          (per_number, per_title, per_text, per_usr_id) 
          VALUES 
          (1, ?, ?, ?)';
$statement = $db->prepare($query);
$statement->bind_param("ssi", $title, $text, $id);

if (!$statement->execute()) throw new Exception($statement->error);

$statement->close();
$db->close();