Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据最后一条记录获取多条记录更新查询更新表_Php_Mysql_Sql - Fatal编程技术网

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
而不仅仅是j
obResponsibilities=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
表达式来处理这种情况。现在你明白为什么这是糟糕的设计了。请规范化您的模式。谢谢您的帮助