如果输入的用户名已经存在于表User中,我试图在Friend表中插入一行。如果我删除WHERE EXISTS
语句但不能使用它,我的代码就可以工作。
$username = $_POST["username"];
$friendname = $_POST["friendname"];
$friend = $friendname;
$statement = mysqli_prepare($con, "INSERT INTO Friend (username, friend_username)
VALUES(?,?) WHERE EXISTS (SELECT * FROM User WHERE username = ?)");
mysqli_stmt_bind_param($statement, "sss", $username, $friendname, $friend);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
调试:
PHP注意:未定义的索引:用户名在 G:\ PleskVhosts \ playchesswithbrandon.net \ httpdocs资料\ UpdateFriendName.php 第3行PHP注意:未定义索引:在...中的friendname G:\ PleskVhosts \ playchesswithbrandon.net \ httpdocs资料\ UpdateFriendName.php 第4行PHP警告:mysqli_stmt_bind_param()需要参数1 是mysqli_stmt,布尔值在 G:\ PleskVhosts \ playchesswithbrandon.net \ httpdocs资料\ UpdateFriendName.php 第8行PHP警告:mysqli_stmt_execute()期望参数1到 是mysqli_stmt,给出的布尔值 G:\ PleskVhosts \ playchesswithbrandon.net \ httpdocs资料\ UpdateFriendName.php 第9行PHP警告:mysqli_stmt_close()期望参数1 mysqli_stmt,给出的布尔值 G:\ PleskVhosts \ playchesswithbrandon.net \ httpdocs资料\ UpdateFriendName.php 在第10行
答案 0 :(得分:0)
在使用存在之前,你应该选择将其与存在内的查询进行比较的结果,如下所示:
$statement = mysqli_prepare($con, "INSERT INTO Friend (username, friend_username)
SELECT username, friend_username
FROM Friend
WHERE EXISTS (SELECT * FROM User WHERE username = ?)");
此link可能会帮助您
答案 1 :(得分:0)
好的,所以你的查询应该是这样的:
<dimen name="layout_height">@dimen/wrap_content</dimen>
您这样做是为了确保用户存在。
P.S。使用字符串作为PK是一个非常糟糕的主意