gpt4 book ai didi

php - 提交时 PDO 查询检查重复的用户名

转载 作者:行者123 更新时间:2023-11-30 23:36:30 25 4
gpt4 key购买 nike

错误:解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,在第 7 行需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

尝试使用 PDO 建立此连接并形成查询,在按下提交后输入字段时检查用户名是否存在。

HTML:

<form action="inc/check_regUsr.php" method="post" id="userLogon">
<div class="field required">
Username: <input type="text" name="regduser" tabindex="1" /><br />
</div>
<div class="field required">
Password: <input type="password" name="regdpass" tabindex="2" /><br />
</div>
<input type="submit" name="submitUser" />
</form>

PHP

<?php
#Login Details
require_once('dbcred.php');
$conn = new PDO("mysql:host=$host;dbname=$db", $user, $pass);

#Check for Existing User
$q = $conn->query("SELECT uname FROM Student WHERE $_POST['regduser'] = uname");
$stmt = $conn->prepare($q);
$r->execute($q);
if($q($r)>= 1){ #if there are 1 or more users with enter username, deny.
echo "Sorry, username already exists";
}
else{
echo "Success";
}

?>

最佳答案

将您的复杂变量包含在双引号字符串内的 {} 中:

$q = $conn->query("SELECT uname FROM Student WHERE {$_POST['regduser']} = uname");
// -----------------------------------------------^^^^^^^^^^^^^^^^^^^^^

看起来您的 SQL WHERE 子句是落后的,并且缺少引号。应该是

WHERE uname = '{$_POST['regduser']}'

您还有另一个问题,您首先调用 $conn->query() 然后尝试创建准备好的语句。

query() 的调用是不必要的,实际上是危险的。而是使用 ? 占位符创建适当的准备语句:

$stmt = $conn->prepare("SELECT uname FROM Student WHERE uname = ?");
$stmt->bindParam(1, $_POST['regduser'], PDO::PARAM_STR);
$stmt->execute();

关于php - 提交时 PDO 查询检查重复的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935302/

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