Mysqli_stmt_bind_param变量类型


mysqli_stmt_bind_param variable type

我从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)中对应的变量类型

结果是数据成功插入表,是工作如期或我做错了?

实际上绑定函数(mysqli_stmt_bind_paramPDOStatement::bindParam)不是验证函数。你只展示了如何解释你的值,以及你想从结果中得到什么类型的值。

答案是:它是预期的工作

这个语句的目标表中的字段设置为整数/浮点数吗?或者将它们设置为数据库中的字符串(有些人出于某种原因这样做)。另外,至于准备好的语句变慢,我认为只有在运行一次唯一查询时才会出现这种情况。如果你在一个循环中做了几个查询,我相信准备好的语句要快得多(前提是语句是在循环之外构造的)。

源变量实际上可以是任何类型,但在准备查询时,它将尝试转换为字符串,因为这是您所说的查询采用的类型。

真正重要的是表中字段的类型。我不确定PHP如何处理这个,但如果查询需要一个整数(i),你试图准备它作为一个字符串(s),它可能会导致一个错误。在任何情况下,您都应该指定正确的类型以避免出现问题。