-2
以前在即将被弃用的正常mysql的功能,我有:在PHP中为MySQL编写语句,我在做什么错误?
这是我现在,想完成同样的事情:
// On first connect to database, create a user to hold data for users not logged in
$stmt = $db->prepare("SELECT id FROM users WHERE id = ?");
$stmt->execute(1);
$stmt->store_result();
if ($stmt->num_rows == 0) {
$stmt = $db->prepare("INSERT INTO users (id, username, email, password) VALUES (?, ?, ?, ?)");
$stmt->execute(1, 'anonymous', 'anonymous', password_hash("noidentity", PASSWORD_BCRYPT));
}
我不断收到错误“警告:mysqli_stmt :: execute()期望完全为0参数,1给出”看起来它期望1,因为我有1个问号,但我显然做错了。
我是否正确地处理以下问题?
$stmt = $db->prepare("UPDATE users SET wins = wins + 1 WHERE id = ?");
$stmt->execute($_SESSION["id"]);
我应该有吗?为胜=部分?如果是这样,那么如果它取决于当前的那个价值,那么我将如何填写该价值?
什么:
$stmt = $db->prepare("SELECT id, username, password FROM users WHERE email = ?");
$stmt->execute($email);
$row = $stmt->fetch();
if (password_verify($password, $row["password"])) {
我这样做是正确的呢?
我只是想把握这些准备好的陈述以达到安全目的,并且发现它有点困难。
我是什么,为什么? – 2013-02-21 04:25:57
'i'is是整数数据。 's'用于字符串数据。 – 2013-02-21 04:26:40
@DougSmith如果你想在'execute'中绑定param,请尝试PDO。 – Passerby 2013-02-21 04:31:15