我正在创建一个iOS应用程序,它将用户名字符串发送到此PHP文件,然后PHP文件检查其用户名是否存在于数据库中,名为“members”的表中。我在网上得到了这个代码,并根据我的需要进行了一些修改。这是代码:
// Main method to redeem a code
function redeem() {
// Check for required parameters
if (isset($_POST["username"])) {
// Put parameters into local variables
$code = $_POST["username"];
echo $code;
// Look up code in database
$user_id = 0;
echo "userid";
$stmt = $this->db->prepare('SELECT username FROM members WHERE username=', $code);
echo "dbprepare";
$stmt->bind_param("is", $code);
echo "bindparam";
$stmt->execute();
echo "execute";
$stmt->bind_result($id, $code);
echo "bindresult";
while ($stmt->fetch()) {
break;
}
$stmt->close();
代码在bind_param
上绊倒,只有echo "dbprepare"
。我做错了什么吗?如何检查用户名?
答案 0 :(得分:3)
试试这段代码
$stmt = $this->db->prepare('SELECT username FROM members WHERE username=?');
echo "dbprepare";
$stmt->bind_param("s", $code);
答案 1 :(得分:3)
我猜你确实错过了一个实际的占位符:
$stmt = $this->db->prepare('SELECT username FROM members WHERE username=?', $code);
查看已添加的?
。准备调用不仅仅附加值。
你需要告诉它它属于哪里。 (如果你的类在mysqli或PDO中实现prepare / bind,并且通常被理解。)
答案 2 :(得分:1)
您忘了在SQL中添加?
。
$stmt = $this->db->prepare('SELECT username FROM members WHERE username=?', $code);
echo "dbprepare";
$stmt->bind_param("is", $code);