擅长:python、mysql、java
<p>列名不能作为DB API中的参数传递到SQL字符串中。这对它也没有意义。在</p>
<p>如果需要检查列名输入,请事先对其进行清理。在</p>
<p>不过,like字符串应该作为参数输入</p>
<p>如果columns变量包含列名的字符串列表,则以下代码示例将是一个改进:</p>
<pre><code>rows = archesDB.read_all("""SELECT %s
FROM arches
WHERE lower(arch) like %%s""" % (",".join(columns),),
("%%%s%%" % (arch.lower(),),))
</code></pre>
<p>首先,列名插入第一个替换(%s),最后一个%%s转换为%s。
然后(“%%%s%%”%”%(下拱门(),),)生成包含%string\u content%的字符串。
最后,db-api从%string\u-content%转义,并在其中添加引号,最后进行查询。在</p>