我正在编写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);
谁能告诉我为什么在这里使用准备好的语句为什么不起作用,以及我需要更改(如果有可能的话)使其与准备好的语句一起工作的原因?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句