有人请帮帮我..
我有一个像这样的表的数据库..
pcNAME下的列可能有多个值。现在我想将“update_Patient”和“update_Medinfo”的值检索到一个数组中,稍后将使用新值更新..哦顺便说一下,“update_Patient”和“update_Medinfo”下的值并不总是“没有“,它可以保存”ID1,ID2,ID3“,所以我想更新一下,如果是这种情况,它只会将新ID与其他IDS一起添加。
我尝试使用以下代码,但“update_Patient”和“update_Medinfo”下的值未更新。请帮帮我..
$get = mysqli_query($conn,"SELECT *, COUNT(id) as count FROM `pcnames`");
while($roww = mysqli_fetch_array($get))
{
$allpp[$roww["update_Patient"]] = $roww ;
$allminfo[$roww["update_Medinfo"]] = $roww ;
$pcID[$roww["id"]] = $roww;
$count = $roww["count"];
}
for($idx = 0; $idx <= $count; $idx++)
{
if ($allpp[$idx] == "no")
{
$allpp[$idx] = "";
}
if ($allminfo[$idx] == "no")
{
$allminfo[$idx] = "";
}
$allpp[$idx] = $allpp[$idx]",web-id"$z;
$allminfo[$idx]= $allminfo[$idx]",web-id"$y;
$update = mysqli_query($conn,"UPDATE `pcnames` SET `update_Patient` = '$allpp[$idx]' , `update_Medinfo` = '$allminfo[$idx]' WHERE `id` = '$pcID[$idx]' ");
变量$ z和$ y只是在需要添加新ID时递增的数字。 先感谢您!任何帮助将不胜感激!
每次创建新ID时,我都想将其添加到“update_Patient”和“update_Medinfo”下的ID列表中。例如,
pcName | update_Patient | upadte_Medinfo
PC1 | web-id1,web-id2,web-id3 | web-id1,web-id2,web-id3
PC2 | web-id1,web-id2,web-id3 | web-id1,web-id2,web-id3
如果添加了新的ID,例如web-id4,将在所有pcNames中更新id列表。
pcName| update_Patient | upadte_Medinfo
PC1 | web-id1,web-id2,web-id3,web-id4 | web-id1,web-id2,web-id3,web-id4
PC2 | web-id1,web-id2,web-id3,web-id4 | web-id1,web-id2,web-id3,web-id4
答案 0 :(得分:0)
你可以使用一些基本的查询,这种事情可能会有所帮助:
$update_Patient = mysqli_query($conn,
"UPDATE `pcnames` SET `update_Patient` = ''
WHERE `update_Patient` == 'no'"
);
$update_Medinfo = mysqli_query($conn,
"UPDATE `pcnames` SET `update_Medinfo` = ''
WHERE `update_Medinfo` == 'no'"
);
$update = mysqli_query($conn,
"UPDATE `pcnames` SET
`update_Patient` = CONCAT_WS(',', `update_Patient`, 'web-patientID".$z."',
`update_Medinfo` = CONCAT_WS(',', `update_Medinfo`, 'web-medID".$y."'"
);
如果没有,试试这个,应该更好,更容易理解
<?php
$get = mysqli_query($conn,"SELECT * FROM `pcnames`");
while($roww = mysqli_fetch_array($get))
{
$all[] = array (
'pp' => $roww['update_Patient'],
'minfo' => $roww['update_Medinfo'],
'id' => $roww['id'],
);
}
for($ii = 0; isset($all[$ii]); $ii++) {
if ($all[$ii]['pp'] == "no")
$all[$ii]['pp'] = "";
$all[$ii]['pp'] = $all[$ii]['pp'].",web-patientID".$z;
if ($all[$ii]['minfo'] == "no")
$all[$ii]['minfo'] = "";
$all[$ii]['minfo'] = $all[$ii]['minfo'].",web-medID".$y;
$update = mysqli_query($conn,
"UPDATE `pcnames` SET
`update_Patient` = '".$all[$ii]['pp']."',
`update_Medinfo` = '".$all[$ii]['minfo']."'
WHERE `id` = '".$all[$ii]['id']."'"
);
}
答案 1 :(得分:0)
你的业务逻辑对我来说似乎有点模糊,因为你似乎总是在更新所有行。我的回答是假设这是有意的。
您的代码除了查询本身之外还有很多问题(错误的连接语法,用$allpp
覆盖所有$roww
和类似值,无用关于检测&#34; no&#34;的逻辑,当你只是在几行之后覆盖这些值时,等等。)
但我的猜测是,鉴于您在每次执行时更新所有行,并且要添加的$y
和$z
的值对于所有行都相同,我认为您可以简化整个行代码部分如下几行:
// build new strings to be added
$new_patient_value = 'web-id' . $z;
$new_medinfo_value = 'web-id' . $y;
// form query to update entire table
// we use CONCAT_WS here to add comma seperator
$query = "
UPDATE `pcnames` SET
`update_Patient` = TRIM(LEADING 'no,' FROM CONCAT_WS(',', `update_Patient`, '$new_patient_value')),
`update_Medinfo` = TRIM(LEADING 'no,' FROM CONCAT_WS(',', `update_Medinfo`, '$new_medinfo_value'))";
// execute query
$result = mysqli_query($conn, $query);
请注意,我已经取消了前期选择,因为它似乎完全没有必要,因为你对现有的值一无所知。