我正在尝试设置一个 HTML pg 来显示数据库中的“snp”表。 我已经把一切准备好并运行良好,但我想添加以下功能而不是:
my $sql = "SELECT * FROM snp WHERE cid LIKE ? ORDER BY pos LIMIT 10";
我可以做一些事情,允许用户输入任何关键字,然后它就会从正确的表中取出它。这就是我想做的:
sub get_snp{
my $sql = "SELECT * FROM snp WHERE ? LIKE ? ORDER BY pos LIMIT 10";
$snp_sth = $dbh->prepare($sql);
$snp_sth->execute("$User_Select","%$Search_String%");
更清楚地说,我的代码仅适用于 $Search_String,但在添加 $User_Select 之后则不适用于。 这是我的参数:
my $Search_String = param("search_for");
my $User_Select = param("columns");
这两个参数稍后都会在 HTML 部分中调用,如下所示:
<TR BGCOLOR="#c0c0c0">
<TD><INPUT TYPE="text" NAME="search_for"
STYLE="color:#787878;"
VALUE="enter keyword | select option"
</TD>
<SELECT NAME="columns">
<OPTION SELECTED> --select option--</OPTION>
<OPTION VALUE ="cid"> cid</OPTION>
<OPTION VALUE ="pos"> Position #</OPTION>
<OPTION VALUE ="cdspos"> CDS Position</OPTION>
<OPTION VALUE ="m82base"> M82 base</OPTION>
<OPTION VALUE ="il"> Introgression Line</OPTION>
<OPTION VALUE ="ilbase"> IL base</OPTION>
<OPTION VALUE ="snptype"> SNP Type</OPTION>
<OPTION VALUE ="aachange"> SNP</OPTION>
</SELECT>
<TD><INPUT TYPE="submit" VALUE="Search"></TD>
<TD><INPUT TYPE="reset" VALUE="Reset"></TD>
</TR>
因此,在上面您可以看到我为 8 个不同表格的 8 个不同选择设置了一个下拉列表。同样,如果用户输入 SL2.40ch12 并选择染色体 ID(或 cid),那么我希望显示该数据,或者如果他们输入 IL10-1 并选择基因渗入线(或 il),则应该提取该数据。
我可能没有以正确的方式处理这件事,所以任何建议都会非常有帮助!如果需要更多代码或一般信息,请告诉我:)
最佳答案
绑定(bind)参数(?
doohikey)仅适用于参数值,不适用于表名称或列名称。
如果您想使用变量作为表名或列名,则:
- 验证它(确保它是数据库中的有效表或有效列)
使用常规插值将其插值到 SQL 字符串中:
my $sql = qq[SELECT * FROM snp WHERE $my_col LIKE ? ORDER BY pos LIMIT 10];
关于mysql - 如何从表中选择所有列?用户在其中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17860433/