Php 仅当datatabase中存在用户时才将mysql插入数据库?

Php 仅当datatabase中存在用户时才将mysql插入数据库?,php,mysql,Php,Mysql,您好,我正在寻找一种方法,在php或mysql中实现一个条件,仅当数据库中存在“from_user_id”时,才执行下面的mysql查询 我有一个名为ptb_users的表,它存储了所有用户id,下面的查询插入内容的另一个表是ptb_wallposts 用户可以在其他用户墙上写入,但在用户可以在用户墙上写入之前/在插入查询运行之前,我希望条件与ptb_用户交叉引用,以确保发送消息的用户/from_user_id存在。因此,如果用户1已登录并希望向用户发送消息,则它首先检查from_user_id

您好,我正在寻找一种方法,在php或mysql中实现一个条件,仅当数据库中存在“from_user_id”时,才执行下面的mysql查询

我有一个名为ptb_users的表,它存储了所有用户id,下面的查询插入内容的另一个表是ptb_wallposts

用户可以在其他用户墙上写入,但在用户可以在用户墙上写入之前/在插入查询运行之前,我希望条件与ptb_用户交叉引用,以确保发送消息的用户/from_user_id存在。因此,如果用户1已登录并希望向用户发送消息,则它首先检查from_user_id是否与ptb_users中的user_id匹配

因此,例如,我不希望人们通过能够将from_user_id设置为0来sql将数据注入数据库,它必须与数据库中的user_id匹配,或者显示错误消息

有人能告诉我怎么做吗。谢谢

我的ptb_墙纸桌是这样的

id   |     from_user_id   |  to_user_id  |  content

1               2                3            hello
我的ptb_用户表如下所示:

id   |     user_id   |  

1             2            
mysql查询:

$sql = "INSERT INTO ptb_wallposts (id, from_user_id, to_user_id, content) VALUES (NULL, '".$_SESSION['user_id']."', '".$profile_id."', '".$content."');";
            mysql_query($sql, $connection);

使用外键,SQL为您完成这项工作。首先,您需要像这样添加它们

ALTER TABLE `ptb_wallposts`
    ADD CONSTRAINT `users_wallposts_fk_1` FOREIGN KEY (`from_user_id`) REFERENCES `ptb_users` (`id`) ON DELETE CASCADE,
    ADD CONSTRAINT `users_wallposts_fk_2` FOREIGN KEY (`to_user_id`) REFERENCES `ptb_users` (`id`) ON DELETE CASCADE;
现在,如果您想插入一个不在ptb_用户中的id,您将得到一个SQL错误

有关删除级联的含义的信息,请参见。您可以尝试以下操作:

if(mysql_num_rows(mysql_query("SELECT id  FROM ptb_users WHERE user_id='".$_SESSION['user_id']."'"))){
        //your insert statement 
}

else{
        //not allowed 
}

我看到您正在使用$\u会话变量,我认为您不需要检查数据库中是否存在用户id,因为最终用户无法操作$\u会话变量。

您可以首先选择。。。如果没有空值,请执行插入。首先,确保为from_user_id、to_user_id和user's table创建外键,然后显示友好消息,你可以像zipser提到的那样进行选择,我将如何构造我的select语句我已经尝试过:$sql=select user\u id FROM ptb\u users WHERE ptb\u users.user\u id=ptb\u wallposts.FROM_user\u id;如果$sql$sql2=插入到ptb_wallposts id中,从_user_id插入到_user_id,内容值为空,'.$_SESSION['user_id'].','.$profile_id.','.$content.';;mysql\u查询$sql,$connection;这在以前的文章中已经被问过了:和其他以前的文章。1452-无法添加或更新子行:外键约束失败ptb2013/sql-22b9_26f4d4,约束用户\u wallposts\u fk\u 1删除级联上的用户id引用ptb_用户id的外键当前是否有无效条目?我能补充一下吗,比如说ptb_wallposts.from_user_id不为空?所以人们不能破解它并添加用户id 0?