我对bind_param使用以下查询:
$qry=" UPDATE `prog_m` SET prog_descr=? WHERE prog_id=? ";
$stmt= $conn->prepare($qry);
$stmt->bind_param('si', $content_text, $prog_id);
在关于prog\ u id的代码中,如果我将两个变量都绑定为字符串,那么id显然是整数。
bind_param('ss', $content_text, $prog_id);
代码仍然有效。有人能解释一下吗?
1条答案
按热度按时间aemubtdh1#
mysql隐式地执行数据类型转换。
作为示范,请考虑:
我们还可以显式地进行数据类型转换,例如,使用
CAST
或者CONVERT
.从字符串到数字的转换非常简单。mysql参考手册中记录了该行为:
https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
我们可以在具体的例子中观察到这种行为。考虑数字文本的情况:
并与字符串文字进行比较
如果
prog_id
列是数字的,mysql执行字符串文本到数字的隐式转换。如果
prog_id
是字符类型,在第一种情况下,mysql隐式地将数字文本转换为字符串。如果
prog_id
是字符类型的列,在第一种情况下,mysql隐式地将列值转换为数字,并与数字文本进行比较。另外,使用带绑定占位符的准备语句也值得称赞!