让我假装我在 InnoDB 数据库中有两个表:categories
和jokes
;并且我正在使用 PHP / MySQLi 来完成工作。表格如下:
CATEGORIES
id (int, primary, auto_inc) | category_name (varchar[64])
============================================================
1 knock, knock
JOKES
id (int, primary, auto_inc) | category_id (int) | joke_text (varchar[255])
=============================================================================
empty
感谢此处的previous答案,我发现您可以执行以下操作,以便添加由$joke_text
,$category_id
组成的新笑话。
INSERT INTO jokes (category_id, joke_text)
SELECT c.id, '$joke_text'
FROM categories AS c WHERE c.id = $category_id;
这使我能够在不使用外键的情况下确保$category_id
值引用现有类别(请忽略外键问题,因为我的问题旨在帮助我学习“复杂的”准备好的陈述)。
所以这很好用。但是,我现在正在努力学习准备好的陈述,在花了一整天的时间后,我终于掌握了基础知识。不幸的是,我有绝对没有想法如何使用mysqli下的预准备语句执行上述SQL查询,而且我无法在线找到有关此类问题的任何信息。
如果有人能帮助我,我会非常感激。
答案 0 :(得分:2)
首先,您创建的语句非常类似于您所做的正常语句
$stmt = $mysqli->prepare("INSERT INTO jokes (category_id, joke_text)
SELECT c.id, ?
FROM categories AS c WHERE c.id = ?;");
获取绑定到参数's'的语句代表字符串数据,而i代表整数
$stmt->bind_param('si', $joke_text,$category_id); // bind to the parameters
/ *执行准备好的声明* /
$stmt->execute();
答案 1 :(得分:0)
我实际上是在写一些代码,但我意识到你也在网上搜索这个代码。所以我得到了PHP网站的链接,你可以看到很多这些链接。
由于您正在学习MySQLi,为什么不转而使用PDO。它非常相似,但我认为这是未来的发展方向。