Como te ha dicho @carlossevi sería una solución lógica escribir sobre un nuevo fichero, no sobre el mismo que estás intentando actualizar.
De todas formas, lo que quieres hacer es posible, te voy a dar una solución, pero teniendo en cuenta que tenía algunas dudas sobre tu código y lo que de verdad quieres:
- ¿Por qué dices que quieres actualizar la segunda columna, si luego pillas el valor de $row[2], que es la tercera columna?
- ¿Por qué escribes en el fichero (fputcsv) solo el valor actualizado de la columna, y no toda la fila?
- ¿Por qué si encuentras una fila con el valor, haces un break, saliéndote del bucle for y no sigues leyendo/actualizando el resto de filas?
- ¿Te das cuenta de que, si lo hicieras bien, la segunda columna se va a actualizar cada vez que ejecutes el script?
- ¿Para qué pones el valor de $result a 'url no existe' si no encuentra el valor, si luego no lo usas para nada?
Este sería un código que cogería un fichero con dos columnas (ojo, no comprueba que alguna fila no tenga dos columnas), y si el valor de la primera columna es igual a 1245, aumenta el valor de la segunda para TODAS las filas (ojo 2, como decía, el valor de la segunda columna se va a actualizar para cada vez que ejecutes el script, no sé si es lo que quieres):
$s ='1245';
//Abrimos el fichero en modo c+, que permite lectura y escritura sin truncar el fichero, como hace w
$f = fopen(__DIR__ .'/test.csv', 'c+');
$cursor = 0;
while ($row = fgetcsv($f)) {
if ($row[0] == $s) {
//Actualiza la segunda columna
$result = $row[1]+1;
$row[1] = $result;
//Retrocede el cursor al principio de la fila, para sobreescribirla
fseek($f, $cursor);
//Escribe la fila con la segunda columna modificada
fputcsv($f, $row);
}
//Actualiza el valor de la variable cursor, para que podamos volver al principio de línea en su caso
$cursor = ftell($f);
}
fclose($f);