使用另一个(PHP)中的值更新MySQL表

时间:2014-02-05 10:22:41

标签: php mysql

我正在尝试创建一个PHP脚本,当另一个表中的日期值大于或等于当前日期时,该脚本将使用“1”更新一个表。这基于两个表中都存在的id字段。我测试了以下代码但没有成功 - 它为foreach循环提供了一个错误:

<?php

$db_conn = mysql_connect('localhost', '***', '****');
mysql_select_db('db', $db_conn);

$info = mysql_query("SELECT * FROM user_profiles");
$fetch = mysql_fetch_array($info);

foreach($fetch['user_id'] as $id) {
$result = mysql_query("SELECT id 
FROM users
WHERE EXISTS (
SELECT user_id
FROM user_profiles
WHERE DATE(profile_value) >= DATE(NOW()) 
AND users.id = user_profiles.user_id)", $db_conn);

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$user_del_result = mysql_query("UPDATE users.block
WHERE user_id = {$row['user_id']}
SET block ='1'
LIMIT 1", $db_conn);                          
}

}
?>

两个表都包含相同数量的行(用户)。

任何帮助都会很棒。

修改

我已将其缩小到以下内容:

<?php

$db_conn = mysql_connect('localhost', '***', '****');
mysql_select_db('db', $db_conn);

$info = mysql_query("SELECT * FROM user_profiles");
$fetch = mysql_fetch_array($info);

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$user_del_result = mysql_query("UPDATE users
WHERE user_id = {$row['id']}
AND WHERE Date(profile_value ) >= DATE(NOW()) 
SET block ='1'", $db_conn);                          
}
?>

但是现在抛出以下错误: 警告:mysql_fetch_array()期望参数1为资源,在第10行的C:\ xampp \ htdocs \ Job.php中给出null

好的,现在我很困惑......

<?php

$db_conn = mysql_connect('localhost', '', '');
mysql_select_db('_db', $db_conn);

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$result = mysql_query("SELECT id 
FROM users
WHERE EXISTS (
SELECT user_id
FROM user_profiles
WHERE DATE(profile_value) >= DATE(NOW()) 
AND users.id = user_profiles.user_id)", $db_conn);

$user_del_result = mysql_query("UPDATE users
WHERE user_id = {$row['id']}
AND WHERE Date(profile_value ) >= DATE(NOW()) 
SET block ='1'", $db_conn);                          
}

?>

错误 警告:mysql_fetch_array()期望参数1为资源,第14行的C:\ xampp \ htdocs \ Job.php中给出布尔值

1 个答案:

答案 0 :(得分:0)

您没有正确使用foreach声明。您应该像以下一样使用它:

foreach ($fetch as $user)

$user将包含您的用户记录;然后您可以访问$user['id']等用户列。

目前,您在foreach语句中使用的是数组键,而不是数组,这就是它可能会抛出错误的原因。

另外,我相信基于另一个表更新表可以在纯SQL中完成,你不必涉及PHP和这么多的查询。