mysql 5中的mysqli新支持的preparestament

时间:2022-12-02 10:59:06


mysql5 中的mysqli的确值得仔细去用和学习一下,今天看了看其中的一些新
特性,比如新增加了支持preparestament的支持,举例子如下(摘自apress的书)
<?php
// Create a new server connection
$mysqli = new mysqli("127.0.0.1", "siteuser", "secret", "company");
// Create the query and corresponding placeholders
$query = "INSERT INTO product SET rowID=NULL, productID=?,
name=?, price=?, description=?";
// Create a statement object
$stmt = $mysqli->stmt_init();
// Prepare the statement for execution
$stmt->prepare($query);
// Bind the parameters

$stmt->bind_param('ssds', $productid, $name, $price, $description);
// Assign the posted productid array
$productidarray = $_POST['productid'];
// Assign the posted name array
$namearray = $_POST['name'];
// Assign the posted price array
$pricearray = $_POST['price'];
// Assign the posted description array
$descarray = $_POST['description'];
// Initialize the counter
$x = 0;

// Cycle through each posted URL in the array, and iteratively execute the query
while ($x < sizeof($productidarray)) {
$productid = $productidarray[$x];
$name = $namearray[$x];
$price = $pricearray[$x];
$description = $descarray[$x];
$stmt->execute();
}

// Recuperate the statement resources
$stmt->close();
// Close the connection
$mysqli->close();
?>

 以上其实是个典型的例子,其实和JAVA里的差不多,要注意的是
 Create a statement object
$stmt = $mysqli->stmt_init();
// Prepare the statement for execution
$stmt->prepare($query);
 首先初始化statement,然后学java那样,调用stmt的prepare方法
最后对SQL语句中的?给予赋值
最后用execute执行,并用$stmt->close()关闭连接,记得最后用$mysqli->close()去关闭连接mysqli