我正在从mysql_
转换为mysqli_
,仍然是mysqli_
的新转换。这是我的代码:
$stmt = mysqli_prepare($con, "INSERT INTO test VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, 'ss', $a, $b);
$a=1;
$b=1.5;
mysqli_stmt_execute($stmt);
我的问题是:
$a has Integer value
$b float
但mysqli_stmt_bind_param ss (string,string)
中的相应变量类型。
结果是数据成功插入到表中,是按预期工作还是我做错了?
答案 0 :(得分:0)
实际上绑定函数(mysqli_stmt_bind_param
或PDOStatement::bindParam
)不是验证函数。您将展示如何仅解释您的值以及您希望从结果中获得什么类型的值。
答案是:它按预期工作。
答案 1 :(得分:0)
此语句所针对的表中的字段是否设置为整数/浮点数?或者它们是否在数据库中设置为字符串(有些人出于某种原因这样做)。另外,至于准备好的语句速度较慢,我认为仅在运行一次运行一次唯一查询时才会出现这种情况。如果你在循环中进行多个查询,我相信准备好的语句要快得多(假设语句是在循环之外构造的)。
答案 2 :(得分:0)
源变量可以是任何类型的,但是在准备查询时它会尝试转换为字符串,因为这就是你所说的查询所用的类型。
真正重要的是表格中的字段类型。我不确定PHP如何处理这个问题,但如果查询采用整数(i
)并且您尝试将其作为字符串(s
)进行准备,则可能会导致错误。在任何情况下,您都应指定正确的类型以避免出现问题。