Php 根据最后一条记录获取多条记录更新查询更新表
我的Php 根据最后一条记录获取多条记录更新查询更新表,php,mysql,sql,Php,Mysql,Sql,我的UPDATE查询正在更新table_2中的jobResponsibilities字段,只需插入jobResponsibilities=c00017,但我想插入所有值,比如jobResponsibilities=C00001、C00302、C00303、C00287、C00286、C00285、c00017而不仅仅是jobResponsibilities=c00017 在一个记录中 我的代码如下: function mySQLSafe( $value, $quote = "'"){
UPDATE
查询正在更新table_2
中的jobResponsibilities
字段,只需插入jobResponsibilities=c00017
,但我想插入所有值,比如jobResponsibilities=C00001、C00302、C00303、C00287、C00286、C00285、c00017
而不仅仅是jobResponsibilities=c00017
在一个记录中
我的代码如下:
function mySQLSafe( $value, $quote = "'"){
// strip quotes if already in
$value = get_magic_quotes_gpc() ? stripslashes($value) : $value;
$value = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($value) : mysql_escape_string($value);
// Stripslashes
if (get_magic_quotes_gpc()){
$value = stripslashes($value);
}
// Quote value
if (version_compare(phpversion(), "4.3.0") == "-1") {
$value = mysql_escape_string($value);
} else{
$value = mysql_real_escape_string($value);
}
$value = $quote . $value . $quote;
return $value;
}
$comcode = "SELECT jobCode, compCode
FROM first_table";
$comcode_RS = mysql_query($comcode, $timespace) or die (mysql_error());
while($row_comcode_RS = mysql_fetch_assoc($comcode_RS))
{
$jobCode = $row_comcode_RS['jobCode']; // more than one record
$compCode = $row_comcode_RS['compCode']; // more than one record
echo $updateSQL = "UPDATE second_table SET jobResponsibilities=".mySQLSafe($compCode)." WHERE jobCode=".mySQLSafe($jobCode)."";
$Result1 = mysql_query($updateSQL, $timespace) or die(mysql_error());
}
使用
CONCAT
将新值附加到列的末尾
$updateSQL = "UPDATE second_table
SET jobResponsibilities = IF(jobResponsibilities = '', " .
mSQLSafe($compCode) . ",
CONCAT(jobResponsibilities, ',', " . mSQLSafe($compCode) . "))
WHERE jobCode=".mySQLSafe($jobCode);
然而,这是糟糕的模式设计。带有逗号分隔列表的列使许多数据库操作变得困难。您应该使用一个单独的工作职责表,每种组合的
jobCode
和compCode
都有行。谢谢您的帮助。谢谢Barmar,但它对我不起作用。它显示了一个错误。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行$updateSQL=“UPDATE excel_test2 SET-jobResponsibilities=CONCAT(jobResponsibilities,”,“.mySQLSafe($compCode)。“WHERE-jobCode=“.mySQLSafe($jobCode)”)附近使用的正确语法;固定的。我省略了右括号。当我更新记录时,还有一件事,在第一个值之前,比如,C00001,C00302,C00303,如何删除这个值添加了一个IF
表达式来处理这种情况。现在你明白为什么这是糟糕的设计了。请规范化您的模式。谢谢您的帮助