当前位置: 首页 > 面试题库 >

如何防止PDO将问号解释为占位符?

赖俊
2023-03-14
问题内容

为了检测hstore中密钥的存在,我需要运行如下查询:

SELECT * FROM tbl WHERE hst ? 'foo'

但是,这给了我一个PDOException:

PDOException: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound: SELECT * FROM tbl WHERE hst ? 'foo'

有什么办法可以逃脱问号,以便PDO不会将其用作占位符?我尝试使用最多四个反斜杠以及一个双问号(??),但似乎没有什么能说服PDO留下问号。


问题答案:

使用函数调用表单。根据系统目录,hstore ?运算符使用以下exist功能:

regress=# select oprname, oprcode from pg_operator where oprname = '?';
 oprname | oprcode 
---------+---------
 ?       | exist
(1 row)

所以你可以这样写:

SELECT * FROM tbl WHERE exist(hst,'foo');

(个人而言,我不是hstore以操作员为中心的设计和文档的忠实拥护者,我认为它放弃了基于函数的接口的有用的自我记录属性,而没有任何实际好处,并且我通常使用其函数调用而不是其操作员。只是因为您可以定义运算符并不意味着您应该这样做。)



 类似资料:
  • 我使用python从API中提取数据,并将其存储在数据帧中。我以CSV格式导出数据框,当我使用excel打开它时,一些列(有非常大的数字)会转换为科学符号,我不希望这样。我希望数字保持整数格式。 我尝试在to_csv命令中使用浮点格式选项,但也没有帮助。 这是我的导出命令: 注意:数字在数据框中以整数格式显示。此外,当使用记事本打开csv文件时,数据将以正确的格式显示。 电流输出: 期望输出:

  • 问题内容: 熊猫的read_csv()方法将’NA’解释为nan(不是数字),而不是有效的字符串。 在下面的简单情况下,请注意,第1行第2列(基于零的计数)的输出为’nan’而不是’NA’。 sample.tsv (制表符分隔) PDB链SP_PRIMARY RES_BEG RES_END PDB_BEG PDB_EN​​D SP_BEG SP_END 5d8b N P60490 1146 114

  • 问题内容: 在带有PDO的PHP中,我们只能使用哪些字符。我尝试过在文档中和在线查找,但无济于事。 我确实找到了一个帖子,其中用户使用连字符来打断查询。我正在编写一个动态生成这些名称的函数,并且由于连字符不是,因此我想知道是否有替代列表。 因此,在此示例中,字符串’:colour’中将允许使用哪些字符? 问题答案: 最简单的查找方法是检查源代码: https : //github.com/php/

  • 问题内容: 我使用的是PHP,而MySQL使用的是PDO。有时我需要准备一个在此查询中多次使用一个变量(占位符)的语句。 例: 但是,如果我尝试准备该语句,则会出现错误,因此我需要采用以下方式: 要调用此语句,我将需要具有以下数组: 对我来说真是太蠢了!为什么MySQL(PDO?)不允许我多次使用一个占位符,并迫使我使用需要更多控制权的额外变量? 如果查询相对简单(如我在上面发布的内容),则可以轻

  • 我使用spaCy对使用段落编号的文本进行句子分割,例如: 我试图强迫斯帕西的分句器不要拆分

  • 问题内容: 我正在尝试实现一个简单的前馈网络。但是,我不知道如何输入。这个例子: 给我以下错误: 我试过了 但这显然不起作用。 问题答案: 要填充占位符,请使用(或)参数。假设您有一个带占位符的下图: 如果要评估,则必须输入的值。您可以按照以下步骤进行操作: 有关更多信息,请参见有关送纸的文档。