mysql bind result_如何使用bind_result与get_result的示例

对我而言,决定性因素是我是否使用调用我的查询列*。

使用bind_result()会更好:// Use bind_result() with fetch()$query1 = 'SELECT id, first_name, last_name, username FROM table WHERE id = ?';

使用get_result()会更好:// Use get_result() with fetch_assoc() $query2 = 'SELECT * FROM table WHERE id = ?';

实施例1 $query1使用bind_result()$query1 = 'SELECT id, first_name, last_name, username FROM table WHERE id = ?';$id = 5;if($stmt = $mysqli->prepare($query)){

/*

Binds variables to prepared statement

i    corresponding variable has type integer

d    corresponding variable has type double

s    corresponding variable has type string

b    corresponding variable is a blob and will be sent in packets

*/

$stmt->bind_param('i',$id);

/* execute query */

$stmt->execute();

/* Store the result (to get properties) */

$stmt->store_result();

/* Get the number of rows */

$num_of_rows = $stmt->num_rows;

/* Bind the result to variables */

$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {

echo 'ID: '.$id.'
';

echo 'First Name: '.$first_name.'
';

echo 'Last Name: '.$last_name.'
';

echo 'Username: '.$username.'
';

}

/* free results */

$stmt->free_result();

/* close statement */

$stmt->close();}/* close connection */$mysqli->close();

实施例2 $query2使用get_result()$query2 = 'SELECT * FROM table WHERE id = ?'; $id = 5;if($stmt = $mysqli->prepare($query)){

/*

Binds variables to prepared statement

i    corresponding variable has type integer

d    corresponding variable has type double

s    corresponding variable has type string

b    corresponding variable is a blob and will be sent in packets

*/

$stmt->bind_param('i',$id);

/* execute query */

$stmt->execute();

/* Get the result */

$result = $stmt->get_result();

/* Get the number of rows */

$num_of_rows = $result->num_rows;

while ($row = $result->fetch_assoc()) {

echo 'ID: '.$row['id'].'
';

echo 'First Name: '.$row['first_name'].'
';

echo 'Last Name: '.$row['last_name'].'
';

echo 'Username: '.$row['username'].'
';

}

/* free results */

$stmt->free_result();

/* close statement */

$stmt->close();}/* close connection */$mysqli->close();

正如你所看到的,你不能使用bind_result带*。但是,get_result适用于两者,但bind_result更简单,并拿出一些混乱$row['name']。

bind_result()

优点:更简单

没必要乱用 $row['name']

用途 fetch()

缺点:不适用于使用的SQL查询 *

get_result()

优点:适用于所有SQL语句

用途 fetch_assoc()

缺点:必须搞乱数组变量 $row[]

不那么整洁

需要MySQL本机驱动程序(mysqlnd)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值