Que*_*low 4 php mysql alter-table prepared-statement
我正在编写 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);
Run Code Online (Sandbox Code Playgroud)
这是使用连接和纯查询执行的(不安全)代码,它确实有效(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);
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么在这里使用准备好的语句不起作用,以及我需要更改什么(如果可能的话?)以使其与准备好的语句一起使用?