我在mysqli中更改了PDO的连接类型。
PDO_conection
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=exercise', 'root', 'root');
} catch (PDOException $e){
exit('Datebase error.');
}
?>mysqli_conection
<?php
$host = "localhost";
$username = "root";
$password = "root";
$dbname = "exercise";
$mysqli = new mysqli($host, $username, $password, $dbname);
if(mysqli_connect_errno()) {
echo "Error: Could not connect to database.";
exit;
}
?>现在试图用mysqli中的PDO变更来编写代码。
PDO_code
$query = $pdo->prepare("SELECT * FROM users WHERE user_name=? AND user_password=? LIMIT 1");
$query->bindValue(1, $username, PDO::PARAM_STR);
$query->bindValue(2, $password, PDO::PARAM_STR);
$query->execute();
$num = $query->rowCount();
$row = $query->fetch(PDO::FETCH_ASSOC);这是我在mysqli试图改变的
mysqli_code
$query = $mysqli->prepare("SELECT * FROM users WHERE user_name=? AND user_password=? LIMIT 1");
$query->bind_result($username, $password);
$query->execute();
$num = $query->num_rows;
$row = $query->fetch_assoc();我哪里错了?
发布于 2013-07-08 13:00:08
这里有一个问题:
$query = $mysqli->prepare("SELECT * FROM users WHERE user_name=? AND user_password=? LIMIT 1");
$query->bind_result($username, $password);//<==
$query->execute();
$num = $query->num_rows;
$row = $query->fetch_assoc();绑定结果将传递的变量绑定到结果集,而需要bind_param
$query->bind_param('ss', $username, $password);在此之后,您仍然必须使用th bind_result,并且忘记fetch_assoc。mysqli_stmt只有一个fetch方法:
$query->bind_result($id, $field2);//one var per table field...
while($query->fetch())
{
echo $id.', '.$field1;
}我觉得很明显为什么不推荐SELECT * .
另外,为了保持一致性,请将mysqli_connection_error()更改为if ($mysqli->connect_error)或其他什么。mysqli_*提供了过程性和面向对象的风格,但请不要将两者混合在一起。
根据这些文档,您不能使用它,正如YourCommonSense向我指出的那样,因为它是在PHP5.2.9和5.3.0之前被破坏的。建议保留过程检查以确保兼容性。
因此,全文如下:
$stmt = $mysqli->prepare('SELECT id FROM users WHER user_name = ? AND user_password = ?');
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($id);
//or, in your case
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$numRows = $result->num_rows;用get_result,save_result,free_result .方法,并从此使用从语句所有你要找的东西获得的所有你要找的东西实例。
https://stackoverflow.com/questions/17527226
复制相似问题