Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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中MySQL的记录更新有限制吗?_Php_Mysql_Mysqli - Fatal编程技术网

PHP中MySQL的记录更新有限制吗?

PHP中MySQL的记录更新有限制吗?,php,mysql,mysqli,Php,Mysql,Mysqli,我编写了一个PHP脚本,将颜色从十六进制转换为RGB和HSL值,并将它们存储在数据库中。我当前的数据集是整个Pantone Solid Coating配色系统,共1341种颜色。我已经有十六进制值了 从那里我访问了数据库,获取十六进制值,进行了两次转换,然后将它们存储回表中 我没有得到任何错误,但更新过程似乎在记录499处停止,尽管我为测试所做的所有值的回声显示计算应用于所有1341种颜色 以下是我到目前为止的脚本: // SQL Server Login Info Removed $sql_c

我编写了一个PHP脚本,将颜色从十六进制转换为RGB和HSL值,并将它们存储在数据库中。我当前的数据集是整个Pantone Solid Coating配色系统,共1341种颜色。我已经有十六进制值了

从那里我访问了数据库,获取十六进制值,进行了两次转换,然后将它们存储回表中

我没有得到任何错误,但更新过程似乎在记录499处停止,尽管我为测试所做的所有值的回声显示计算应用于所有1341种颜色

以下是我到目前为止的脚本:

// SQL Server Login Info Removed
$sql_connection = new mysqli($sql_server, $sql_username, $sql_password, $sql_database);

if ($sql_connection->connect_error) {
    die("Connection Failed: " . $sql_connection->connect_error);
}

$query = "SELECT * FROM coated";
$result = $sql_connection->query($query);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $colorname = $row["mapName"];
        $hexvalue = $row["hex"];

        if ($row["rgb"] == '') {
            $rgbvalue = hex2rgb($hexvalue);
        } else {
            $rgbvalue = $row["rgb"];
        }
        if ($row["hsl"] == '') {
            $hslvalue = hex2hsl($hexvalue);
        } else {
            $hslvalue = $row["hsl"];
        }

        //echo "Color: " . $row["mapName"] . " | " . $rgbvalue . " | " . $hslvalue . "<br>";

        $wrt_query = "UPDATE coated SET hex='".$hexvalue."', rgb='".$rgbvalue."', hsl='".$hslvalue."' WHERE mapName='".$colorname."'";
        if ($sql_connection->query($wrt_query) === true) {
            echo "Record for " . $colorname . " updated <br>";
        } else {
            echo "Error updating record for " . $colorname . "<br>";
        }
    }
}

您可能需要在
php.ini
中增加脚本时间,这里我使用一个php函数来完成。 我认为十六进制作为键更可靠,所以我使用它,因为它总是相同的字段长度。 我已经取出了它的更新,因为你没有改变它。 我也在用mysql做这件事,因为我很狡猾。 备份你的数据库,试试看

set_time_limit(10000);
// SQL Server Login Info Removed
$sql_connection = new mysqli($sql_server, $sql_username, $sql_password, $sql_database);

if ($sql_connection->connect_error) {
    die("Connection Failed: " . $sql_connection->connect_error);
}

$query = "SELECT * FROM coated";
$result = $sql_connection->query($query);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {

        $wrt_query = 
        "UPDATE coated SET 
         rgb=IF(rgb IS NULL or rgb='','".hex2rgb($row["hex"])."',rgb)', 
         hsl=IF(hsl IS NULL or hsl='','".hex2hsl($row["hex"])."',hsl)' 
         WHERE hex='".$row["hex"]."';";

        if ($sql_connection->query($wrt_query) === true) {
            echo "Record for " . $colorname . " updated <br>";
        } else {
            echo "Error updating record for " . $colorname . "<br>";
        }
    }
}
设置时间限制(10000);
//SQL Server登录信息已删除
$sql\u connection=newmysqli($sql\u服务器,$sql\u用户名,$sql\u密码,$sql\u数据库);
如果($sql\u连接->连接\u错误){
die(“连接失败:”.$sql\u连接->连接\u错误);
}
$query=“选择*FROM”;
$result=$sql\u连接->查询($query);
如果($result->num_rows>0){
而($row=$result->fetch_assoc()){
$wrt\U查询=
“更新涂层集
rgb=如果(rgb为NULL或rgb=“”,“.hex2rgb($row[“hex”])。”,rgb),
hsl=IF(hsl为NULL或hsl=“”,“.hex2hsl($row[“hex”])。”,hsl)'
其中十六进制='“$行[“十六进制”]。”;“;
if($sql\u连接->查询($wrt\u查询)==true){
echo“记录为“$colorname.”已更新
“; }否则{ echo“更新“$colorname.”
的记录时出错; } } }
当您将数据存储在DB中时,需要比平时多一点的时间,因为这不仅仅是I/O操作,我认为您有一个超时时间,或者您应该在小块中执行(这是一个更好的做法),或者在php.ini文件中增加超时时间。您最初的请求是否获得了所有行,或者它们是否被分页或其他内容。没有限制可以阻止您发布数千条更新。更有可能的情况是,您的代码中缺少了记录,或者出现了超时或其他数据库错误,从而中止了脚本。@Octopi添加了摘录。@Octopi pantone-512-C#833177@Octopi导入CSV以创建表格时,长度设置为23。
set_time_limit(10000);
// SQL Server Login Info Removed
$sql_connection = new mysqli($sql_server, $sql_username, $sql_password, $sql_database);

if ($sql_connection->connect_error) {
    die("Connection Failed: " . $sql_connection->connect_error);
}

$query = "SELECT * FROM coated";
$result = $sql_connection->query($query);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {

        $wrt_query = 
        "UPDATE coated SET 
         rgb=IF(rgb IS NULL or rgb='','".hex2rgb($row["hex"])."',rgb)', 
         hsl=IF(hsl IS NULL or hsl='','".hex2hsl($row["hex"])."',hsl)' 
         WHERE hex='".$row["hex"]."';";

        if ($sql_connection->query($wrt_query) === true) {
            echo "Record for " . $colorname . " updated <br>";
        } else {
            echo "Error updating record for " . $colorname . "<br>";
        }
    }
}