gpt4 book ai didi

php - mysqli、准备好的语句和 INSERT-SELECT

转载 作者:可可西里 更新时间:2023-11-01 07:37:23 25 4
gpt4 key购买 nike

假设我在 InnoDB 数据库中有两个表:categoriesjokes;并且我正在使用 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 查询,而且我无法在网上找到有关此类问题的任何信息。

如果有人能帮助我,我将不胜感激。

最佳答案

首先,您创建的语句与您所做的普通语句非常相似

$stmt = $mysqli->prepare("INSERT INTO jokes (category_id, joke_text)
SELECT c.id, ?
FROM categories AS c WHERE c.id = ?;");

获取参数绑定(bind)的语句 's'代表字符串数据,i代表整数

$stmt->bind_param('si', $joke_text,$category_id);   // bind to the parameters

/* 执行预处理语句 */

$stmt->execute();

关于php - mysqli、准备好的语句和 INSERT-SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com