我有 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/