[英]Prepared statement not working with ALTER table queries
我正在编写一个简单的函数,使用带有 PDO 的 PHP 向表中添加一列来准备查询。
连接( $dbh
)有效,其他不涉及参数的查询有效。 但是,添加列的重要查询没有。
当我检查数据库时,有一个名为?
(即只是一个问号)和我指定的所有属性。
我检查以确保$column
变量正确通过,此外,execute 语句返回 false,因此据称该语句失败,但仍以某种方式创建了一列。
错误信息不是很有帮助(至少对我而言):
Array ( [0] => 00000 ).
我在代码中搜索了简单的错别字,但找不到任何东西。 有任何想法吗?
$qry='ALTER TABLE `completed` ADD `:column` TINYINT(1) NOT NULL DEFAULT 0';
$stmt = $GLOBALS['dbh']->prepare($qry);
$stmt->bindParam(":column",$column,PDO::PARAM_STR);
$stmt->execute();
$arr = $stmt->errorInfo();
print_r($arr);
$stmt===TRUE ? $return=1 : $return=0;
http://dev.mysql.com/doc/refman/5.6/en/prepare.html说:
参数标记只能用于数据值应该出现的地方,不能用于 SQL 关键字、标识符等。
标识符是指数据库名、表名、列名、索引名、分区名等。
数据值是指数字文字、带引号的字符串文字或带引号的日期文字。
要添加新列,您需要在准备查询之前在 SQL 字符串中包含该列的名称。 这意味着您需要确保列名中没有可能造成 SQL 注入漏洞的有趣字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.