所以即时使用MVC进行数据库连接等。
我的问题非常简单: 有没有办法让我使用像?=?。
之类的东西来制作动态这是一个似乎不起作用的例子:
$statement = $this->dbh->prepare("SELECT fieldname FROM tablename WHERE ? = ?");
$statement->bind_param('ss', $stringvariable, $fieldvalue);
$statement->execute();
该示例位于一个函数中,该函数接收包含字段名的$ stringvariable。
感谢您提供有关如何制作此类作品的任何建议!
EDIT!
它使用了AlexK发布的链接。
$statement = $this->dbh->prepare("SELECT fieldname FROM tablename WHERE ".$stringvariable." = ?");
$statement->bind_param('s', $fieldvalue);
答案 0 :(得分:1)
不,这是不可能的。准备好的语句仅对变量有用,对场名不有用。但是,您可以使用以下查询首先检查表名:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = ?;
如果结果为1,您可以安全地在查询中添加表名作为PHP变量来检查表名:
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ? AND COLUMN_NAME = ?;
如果这也导致1,您可以在查询中安全地添加表名和列名。
此方法通过首先控制输入来防止SQL注入。
答案 1 :(得分:0)
我更喜欢这样做:
test = pd.Series(test)