目前我正在研究PHP MYSQLi,PDO并且仍然难以处理一些基本语句也很困惑..我试图在存储之前检查我的数据库中是否已存在电子邮件,但似乎我的代码无效我测试了它。我错过了什么或者我需要修改我的代码..?
$mysqli = mysqli_connect("localhost", "root", "", "mydbname");
if (!$mysqli) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
$email="johnsmith@gmail.com";
$username_query = "SELECT username FROM user WHERE email = ?";
$statement = $mysqli->prepare($username_query);
$statement->bind_param('s', $email);
$statement->execute();
$statement->store_result();
现在,我想知道一行是否受到影响。有记录 johnsmith@gmail.com在我的数据库上,但结果总是显示0。 $ mysqli-> affected_rows对我也不起作用..请赐教,谢谢。
printf("row affected: %d.\n", $statement->num_rows);
答案 0 :(得分:0)
num_rows
和affected_rows
都是获取SELECT查询找到的行数的方法(鉴于查询确实找到了某些内容和get_result()/store_result()
)
每个人都可以运行以下代码并查看
$email="johnsmith@gmail.com";
$statement = $mysqli->prepare("SELECT ?");
$statement->bind_param('s', $email);
$statement->execute();
$statement->store_result();
echo "affected_rows: $statement->affected_rows\n";
echo "num_rows: $statement->num_rows\n";
因此,这个问题只是由某种混淆引起的。
所以请不要让它成为另一种迷信的来源。
答案 1 :(得分:-1)
您需要获取结果。
$statement->store_result();
之后:
$statement -> fetch();