插入Where Exists语句

时间:2015-12-09 09:32:49

标签: php mysql

如果输入的用户名已经存在于表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行

2 个答案:

答案 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是一个非常糟糕的主意