mysqli->prepare()和stmt->prepare()有区别吗?


Is there a difference between mysqli->prepare() and stmt->prepare()?

$sql = 'SELECT * FROM Table WHERE Column = ?';
$stmt = $mysqli->stmt_init();
if ($stmt->prepare($sql)) {
    $stmt->bind_param('s', $ColumnValue);
    $stmt->execute();
    $stmt->bind_result($Col1, $Col2);
    $stmt->fetch();
    $stmt->close();
}
// or
if ($stmt = $mysqli->prepare($sql)) {
    $stmt->bind_param('s', $ColumnValue);
    $stmt->execute();
    $stmt->bind_result($Col1, $Col2);
    $stmt->fetch();
    $stmt->close();
}

处理预处理语句时,有什么区别?应该使用哪一种?

查看源代码,它们都做同样的事情。就我个人而言,我会选择输入更少的那个,因为两者的可读性都一样。