假设我有一个 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
感谢此处的先前的回答,我发现可以执行以下操作来添加由:$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查询,也没有找到关于这个问题的任何信息。
如果有人能帮我解决这个问题,我会非常感激。
WHERE c.id = $category_id
语句中加上一个?
呢?这样它就会变成:WHERE c.id = ?
,然后我只需要将$category_id
添加为stmt->bind_param
的第二个参数即可。 - EleventyOne