为什么不能使用准备好的语句(基于ALTER TABLE)来设置PHP中MySQL字段的默认值?

问题溢出

我正在编写PHP代码来更改MySQL数据库中varchar字段的默认值。为了确保代码的安全性,我使用了一条准备好的语句,但是由于某种原因,在这种特殊情况下,似乎不可能让PHP / MySQL接受这一点,为什么呢?

(我正在使用PHP 5.5.11)

这是使用准备好的语句的代码,该代码不起作用(mysqli_stmt_execute()调用返回null,并且该字段的默认值保持不变):

$new_field_default_value = 'test';
$field_modification_sql_command = "ALTER TABLE MyTable ALTER COLUMN MyColumn SET DEFAULT ?";
$stmt = mysqli_stmt_init($db_conn_handle);
mysqli_stmt_prepare($stmt, $field_modification_sql_command);
mysqli_stmt_bind_param($stmt, 's', $new_field_default_value);
$temp_db_res = mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);

这是使用串联和纯查询执行的(不安全)代码,它们确实起作用(mysqli_query()调用返回true,并且字段的默认值确实被更改):

$new_field_default_value = 'test';
$field_modification_sql_command = "ALTER TABLE MyTable ALTER COLUMN MyColumn SET DEFAULT '" . $new_field_default_value . "'";
$temp_db_res = mysqli_query($db_conn_handle, $field_modification_sql_command);

谁能告诉我为什么在这里使用准备好的语句为什么不起作用,以及我需要更改(如果有可能的话)使其与准备好的语句一起工作的原因?

费利普·奥利维拉(Felypp Oliveira)

实际上,从有关准备语句文档中可以得出

通常,参数仅在数据操作语言(DML)语句中有效,而在数据定义语言(DDL)语句中无效。

因此,DDL准备语句中的绑定参数不起作用。我认为您需要验证参数preg_match才能通过“不安全”方式执行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用准备好的语句时,MySQL无法锁定表

来自分类Dev

使用准备好的语句从mysql查询中获取多行?

来自分类Dev

MySQL Connector中的准备好的语句

来自分类Dev

php select准备好的语句是什么样的?

来自分类Dev

MySQL准备好的语句语法

来自分类Dev

使用准备好的语句插入选择的MySQL

来自分类Dev

EXTJS 5和PHP使用准备好的语句创建

来自分类Dev

使用准备好的语句在mySQL中返回行数

来自分类Dev

PHP MySQL-如何在准备好的语句中插入默认值

来自分类Dev

是否可以基于同一表中的字段B的值来设置字段A的默认值?

来自分类Dev

使用准备好的语句在MySql中插入(DATE(now))

来自分类Dev

运行准备好的语句(MySQL / PHP)

来自分类Dev

mysql准备好的语句错误:MySQLSyntaxErrorException

来自分类Dev

mysql准备好的语句我应该使用哪条语句

来自分类Dev

java mysql准备好的语句

来自分类Dev

php select准备好的语句是什么样的?

来自分类Dev

EXTJS 5和PHP使用准备好的语句创建

来自分类Dev

登录函数PHP的准备好的语句

来自分类Dev

为什么我不能通过PHP在准备好的查询中调用MySQL存储函数?

来自分类Dev

PHP多个准备好的语句

来自分类Dev

准备好的语句中的$ row [''] PHP

来自分类Dev

使用准备好的语句写入 mysql

来自分类Dev

mysql(非常)动态准备好的语句

来自分类Dev

如何使用准备好的语句从 mysql 中获取多行

来自分类Dev

SQL 准备好的语句。PHP

来自分类Dev

php - 准备好的语句未执行

来自分类Dev

PHP 准备好的语句我很好奇为什么这不起作用

来自分类Dev

准备好的语句 PHP OOP

来自分类Dev

使用 PHP 和 MSSQL 准备好的语句

Related 相关文章

热门标签

归档