gpt4 book ai didi

php - 为 PHP sql 查询指定参数

转载 作者:行者123 更新时间:2023-12-01 00:14:26 26 4
gpt4 key购买 nike

我想使用 PHP 在 SQL 查询中指定原始用户名/密码:

function doRegister($username, $password) {
$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME) or die('error');
$query = "SELECT username FROM users WHERE username = $username";
$result = $db->query($query);
if (mysqli_num_rows($result) == 1) {
$msg = 'Username already taken';
} else {
$register = "INSERT INTO users(username, password)" .
"VALUES($username, SHA($password))";

//error happens here
$db->query($register) or die('error registering your account');


$msg = "Register successful";
}
$db->close();
echo $msg;
}

我在 $db->query($register) 处遇到错误。我做错了什么?

最佳答案

您没有用引号将您的 $username$password 括起来,因此当传递整数时它可以正常工作但不接受字符串:

$query = "SELECT username FROM users WHERE username = '$username'";
//----------------------------------------------------^^^^^^^^^^^^

$register = "INSERT INTO users(username, password)" .
"VALUES('$username', SHA('$password'))";
//-------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

请确定您已经使用 mysql_real_escape_string() 正确地转义了这些值。

这些列实际上不应该是 TEXT 类型。它们应该是 VARCHAR()。也许您的 VARCHAR() 尝试失败是因为您缺少长度参数,如 VARCHAR(32) 中最多 32 个字符。

关于php - 为 PHP sql 查询指定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com