【问题标题】:First user input is ignored by mysql第一个用户输入被mysql忽略
【发布时间】:2021-06-29 01:04:59
【问题描述】:

我在数据库中有 3 个表。国家(国家/地区名称,国家/地区代码),用户(用户名,电子邮件,密码)和访问(国家/地区名称,用户名,评级)。 country_name 和 username 是visited 中的外键,它们必须是唯一的,例如如果有行:

'法国'| '用户' | 5

如果用户想要插入具有相同外键值的行:

'法国'|'用户'| 3

它应该只是更新评分,所以结果应该是这样的:

'法国'|'用户'| 3

我尝试这样做,但是当新用户插入新国家/地区时它不会做任何事情,在用户已经做了一个被忽略的插入后它工作正常,下一个插入很好。 例如,如果输入是:

'克罗地亚'|'用户'| 1

'柬埔寨'|'用户'| 3

数据库如下所示:

'柬埔寨'|'用户'| 3

这是我的 php 文件:

<?php  
include "connection.php";


if(isset($_POST['country']) && isset($_POST['ratings']) && isset($_POST['username'])){
  $country= $_POST['country'];
  $ratings = $_POST['ratings'];
  $username = $_SESSION['username'];
  $result = $mysqli->query("INSERT INTO visited(country_name,rate,username) 
             VALUES('".$country."', '".$ratings."', '".$username."')
             ON DUPLICATE KEY UPDATE
             country_name= '".$country."',
             username='".$username."',
             rate='".$ratings."'");

echo "$country";
echo "$ratings";
echo "$username";


 }
 else{
     echo "Error";
 }

 ?>  

【问题讨论】:

    标签: php mysql sql database


    【解决方案1】:

    你弄错了:

    $result = $mysqli->query("INSERT INTO visited(country_name,rate,username) 
                 VALUES('".$country."', '".$ratings."', '".$username."')
                 ON DUPLICATE KEY UPDATE
                 country_name= '".$country."',
                 username='".$username."',
                 rate='".$ratings."'");
    

    应该是:

    $result = $mysqli->query("INSERT INTO visited(country_name,rate,username) 
                 VALUES('".$country."', '".$ratings."', '".$username."')
                 ON DUPLICATE KEY UPDATE
                 rate='".$ratings."'");
    

    另外visited 表必须有country_name,username 一起作为主键,对吧?

    【讨论】:

    • 谢谢!它可以工作。它是多对多的,所以 country_name 和 username 是外键。我做了约束,所以它们必须是唯一的组合。
    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多