2

我正在从mysql_to转换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).

结果是数据成功插入到表中,是按预期工作还是我做错了?

4

3 回答 3

0

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

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

于 2013-11-07T06:24:51.590 回答
0

实际上绑定函数(mysqli_stmt_bind_paramPDOStatement::bindParam)不是验证函数。您将展示如何仅解释您的值以及您希望从结果中获得什么类型的值。

答案是:它按预期工作。

于 2013-11-07T00:29:26.387 回答
0

此语句针对的表中的字段是否设置为整数/浮点数?或者它们是否在数据库中设置为字符串(有些人这样做,无论出于何种原因)。此外,至于准备好的语句较慢,我相信只有在运行一次唯一查询时才会出现这种情况。如果您在一个循环中进行多个查询,我相信准备好的语句要快得多(假设语句是在循环之外构造的)。

于 2013-11-07T00:59:59.303 回答