我想在我的表中创建一个唯一的值列,并使用php检查该值是否已插入表中。例如,一个用户名不能使用两次。 我试图使用SELECT从数据库中获取值,但它不起作用。 当我试图回复表中的值时:
echo $conn->query("SELECT DISTINCT Username
FROM UserDetail;");
它说: 可捕获的致命错误:类mysqli_result的对象无法转换为字符串
答案 0 :(得分:1)
这个问题不应该在PHP中解决,因为它是数据库设计问题。相反,您希望更改UserDetail
表,以便数据库拒绝任何尝试插入重复项的查询。这是您运行的查询:
$sql = 'ALTER TABLE UserDetail ADD UNIQUE INDEX (`Username`)';
$result = $conn->query($sql);
if($result) echo 'Success!';
else echo $conn->error;
成功完成此操作后,将无法在此表中输入重复的Username
值;查询将不会执行并将产生错误。
现在,为避免脚本尝试插入已存在的用户名时出错,请将插入查询从INSERT
更改为INSERT IGNORE
:
$sql = "INSERT IGNORE INTO UserDetail SET Username='$escaped_new_username'";
$result = $conn->query($sql);
顺便说一句,您的代码失败了,因为您尝试回复$conn->query
的结果,但它不是字符串。显示DB结果的步骤如下: