首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用占位符区分查询中的用户数据和参数名称

使用占位符区分查询中的用户数据和参数名称
EN

Stack Overflow用户
提问于 2011-11-06 10:10:15
回答 2查看 40关注 0票数 0

我正在使用一个类来构建一个带有命名参数的MySQL查询,以便将数据绑定到该查询。一个查询示例可能是。

代码语言:javascript
复制
INSERT INTO table (title, text) VALUES (?title, ?text)

现在,您可以通过提供参数名称和值来指定要用于这些占位符(?title?text)的值。在这个过程中,值将被转义(基本上是对布尔值、数组等进行特殊处理的mysql_real_escape_string )。

问题是一个包含占位符本身的值,因为我按顺序替换它们。为了完成上面的示例,替换可能如下所示。

代码语言:javascript
复制
title -> "hey ?text"
text -> "lorem ipsum ..."

我的第一个想法是首先用独特的值替换占位符。这些必须是不能出现在转义字符串中的字符串。

这是一种好的方法吗?有什么字符序列可以达到这个目的?

EN

回答 2

Stack Overflow用户

发布于 2011-11-06 10:43:52

看看如何在mysqli_stmt_bind_param()中使用mysqli_prepare()

您需要做的是将现有的命名参数替换为问号。当您按顺序从查询字符串中提取命名参数时,您将构建一个有序数组,该数组将在mysqli_stmt_bind_param()函数中使用,并从值数组中放置适当的值。构建有序数组后,需要遍历该数组并进行类型检查,以便将$types值传递给mysqli_stmt_bind_param()

我强烈建议您考虑使用像 这样的库,而不是使用自己的库。

票数 0
EN

Stack Overflow用户

发布于 2011-11-10 15:23:08

我相信你的整个概念都是错误的。

你把事情搞混了。

占位符应仅用于向查询添加值。不是为了创建花哨的语法。

没有什么能阻止你去做像这样的事情

$text = "lorem ipsum ...";$title =“嘿$text";

所以用这种方法准备好你的变量。然后才将它们放入查询中。

然而,我可能忽略了一些合理的问题。如果你有什么合理的反对意见--我会试着为你找到一个解决方案

至于你标题中的问题,我只是在逃避吗?和另一个??在我的占位符解析器中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8024761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档