我正在加入两个表,我想更新所有行。
CComPtr<EnvDTE::Project> temp;
CComBSTR pPath;
pSolution->get_TemplatePath(
CComBSTR("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"), // C++
&pPath);
我在“运行SQL查询”中尝试了上面的Select语句,它查询了我想要的结果。我想更新所有查询,但我不能。我尝试在更新下放置echo,它回显我需要更新的ID,但我的更新语句没有执行。
答案 0 :(得分:1)
不是选择所有学生然后逐个更新,而是通过加入两个表并更新它,实际上可以一次性完成。
UPDATE students s
INNER JOIN course c ON c.id = s.course_id
SET s.Year = '$Graduated',
s.Status = 'non-Active'
WHERE c.duration = '2'
AND s.status = '$stat'
AND s.Year = '$year'
还必须考虑到上面的查询易受sql注入攻击。下面的这篇文章将指导您如何防止它。
答案 1 :(得分:0)
第一个查询的问题是有两列具有相同的名称; ID。因此,引用行中的ID会产生错误。使用alias进行修复,如下所示。为了获得更好的性能,请使用内部join。您还忘记再次运行更新查询数据库。
<?php
include("connection/mysqlconnect.php");
$sql=" SELECT course.duration, course.id as cID, students.ID as sID
FROM course JOIN students ON course.id=course_id
where course.duration = '2'";
$result = $conn->query($sql);
$count=mysqli_num_rows($result);
if($count>=1)
{
while($row = mysqli_fetch_array($result)) {
$id = $row['sID'];
$stat = 'Active';
$year = '2nd Year';
$Graduated = 'Graduated';
echo "Student ID to be updated: $id<br/>";
$sql1 = "UPDATE students SET Year='$Graduated', Status='non-Active'
WHERE ID = '$id' and (status='$stat' and Year='$year')";
//you have to execute the query for the update to be done.
if ($conn->query($sql1) === TRUE) {
echo "Record updated successfully ";
} else {
echo "Error updating record: " . $conn->error;
}
}
}
$conn->close();
?>