INSERT INTO关系数据库不能使用php代码

时间:2018-03-05 01:34:07

标签: php mysql

我尝试将数据插入表中的函数的代码是

function registerDiet(){
    global $connect, $meat, $seafood, $salad, $name, $username, $age, $email, $password, $hash;

    $statement = mysqli_prepare($connect, "SELECT user_id FROM User WHERE username = ?");
    mysqli_stmt_bind_param($statement, "s", $username);
    mysqli_stmt_execute($statement);
    mysqli_stmt_store_result($statement);
    mysqli_stmt_bind_result($statement, $colUserID);

    $statement = mysqli_prepare($connect, "INSERT INTO Diet (user_id, meat, seafood, salad) VALUES (?, ?, ?, ?)");
    mysqli_stmt_bind_param($statement, "iiii", $colUserID, $meat, $seafood, $salad);
    mysqli_stmt_execute($statement);
    mysqli_stmt_close($statement);
}

该函数在代码末尾调用。

user_id是User表中的主键和Diet表中的外键,已经配置了关系,并且在使用phpMyAdmin时它可以正常工作。肉类,海鲜和沙拉字段类型都是数据库表中的boolean(tinyint)。

例如,当我使用

INSERT INTO `Diet` (`user_id`, `meat`, `seafood`, `salad`) VALUES ('46', '0', '0', '0');  

在phpMyAdmin中它有效,任何人都可以提供建议吗?

1 个答案:

答案 0 :(得分:0)

你必须在打开另一个声明之前关闭第一个声明。

function registerDiet(){
global $connect, $meat, $seafood, $salad, $name, $username, $age, $email, $password, $hash;

$statement = mysqli_prepare($connect, "SELECT user_id FROM User WHERE username = ?");
mysqli_stmt_bind_param($statement, "s", $username);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $colUserID);

mysqli_stmt_close($statement);

$statement = mysqli_prepare($connect, "INSERT INTO Diet (user_id, meat, seafood, salad) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "iiii", $colUserID, $meat, $seafood, $salad);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);

}