php - 将带有 SELECT 结果的变量组合到 INSERT 语句中

标签 php mysql sql

我有 3 个表:

Users - uID (INT AUTO_INCREMENT), name (VARCHAR)

Movies - mID (IN AUTO_INCREMENT), title (VARCHAR)

Watched - uID (INT), mID (INT)

我正在编写一个 php 函数,该函数构造一个查询,该查询添加特定人观看的电影记录。到目前为止,这是我的想法:

function set_watched($name, $movies){
    $sql = "SET @userid = (SELECT uID FROM users WHERE name = '$name' LIMIT 1); ";
    $sql .= "INSERT INTO watched (uID, mID) VALUES ('";

    foreach ($movies as $index => $movie){

    }

}

我的问题: 有没有办法将 @userid 变量与 SELECT mID FROM MOVIES WHERE title = $movie OR title = $movie [generated with foreach] 的结果相结合?

我不想为每个电影标题生成单独的 SELECT 语句。也许我根本不需要使用 @userid 变量?

最佳答案

尝试这样的事情:

$sql = "INSERT INTO watched (uID, mID)
  SELECT User.uID, Movies.mID
  FROM (SELECT uID FROM Users WHERE Users.name = '$name' LIMIT 1) AS User, Movies      
  WHERE ";

foreach ($movies as $index => $movie){
  $sql .= "Movies.title = '$movie' OR ";
}

$sql = substr($sql, 0, -4) . ";";

关于php - 将带有 SELECT 结果的变量组合到 INSERT 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031019/

相关文章:

php - 用于集成 PayPal IPN 的示例 php 代码

php - PHP中关联数组的插值(双引号字符串)

c# - 无法连接到 SQL Server 数据库

sql - 添加新列到现有表中

javascript - Php Ajax 表单未提交

php - 获取观看次数(唯一观众和唯一视频)

java - CREATE TABLE 的 MySQL Errno 150(外键不正确)

mysql - LEFT JOIN 的 SQL 查询不返回结果

php - Laravel5 Eloquent : How to get a few articles from special condition?

mysql - 我的 SQL 查询总是报错