准备好的陈述和数据库

时间:2019-06-17 22:00:52

标签: php sql mysqli

数据不进入数据库。我可以创建表,但是不能从表单中插入数据。我所看到的都是零。

我的最后一个问题是建议我使用准备好的语句。因此,我模仿了手册。我已经尽力简化了代码。建议其他问题在绑定语句之前定义变量,而我尝试过移动变量。 (注意:$ user变量来自必需的文件)

/* Non-prepared statement */
if (!$mysqli->query("DROP TABLE IF EXISTS profiles") || !$mysqli->query("CREATE TABLE profiles
    (user VARCHAR(16), text VARCHAR(355))")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$text = sanitizeString($_POST['text']);
$text = preg_replace('/\s\s+/', ' ', $text);


/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare("INSERT INTO profiles
    (user, text) VALUES (?,?)"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

/* Prepared statement, stage 2: bind and execute */

if (!$stmt->bind_param("ii", $user, $text)) {
    echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

/* explicit close recommended */
$stmt->close();

我希望创建数据库列。但是,不会记录从浏览器输入到表单中的用户数据。相反,每次尝试时,我都会看到一行零。

1 个答案:

答案 0 :(得分:0)

您在线将整数传递到表中

if (!$stmt->bind_param("ii", $user, $text)) {
                        ^^

i是整数,s是字符串。

if (!$stmt->bind_param("ss", $user, $text)) {