Почему не отображаются Я.Карты?
Хочу дополнить ответ Алексей Немиро, постарайтесь больше никогда не смешивать код на js и на php вместе, и сводите точки их соприкосновения к минимуму.
Вот пример, как можно было бы это сделать, не превращая код в лапшу из двух языков:// Этот скрипт теперь вообще можно вынести в отдельный js файл
<script type="text/javascript">
function initYmaps(params) {
    ymaps.ready(function() {
        var coord = params['coords'];
        var myMap = new ymaps.Map('map', {
            center: [coord],
            zoom: 9,
            controls: ['zoomControl']
        });
           
        var myPlacemark = new ymaps.Placemark(coord, {
            iconContent: params['address'],
            balloonContent: params['title']
        }, {
            preset: 'twirl#violetStretchyIcon'
        });

        myMap.geoObjects.add(myPlacemark);
    });
}
</script>

<script type="text/javascript">
initYmaps(<?php echo json_encode(array(
    'coords' => $data['coords'],
    'address' => $data['address'],
    'title' => $data['title'],
))?>);
</script>
Переменная coord - строка:var coord = "<?=$data['coords'];?>";
В center  ожидается массив, но передается строка, как элемент массива:var myMap = new ymaps.Map('map', {
  center: [coord],
  zoom: 9,
  controls: ['zoomControl']
});
Можно сделать split по запятой:var coord = "58.6103,49.6917".split(',');
// var coord = "<?=$data['coords'];?>".split(',');
И передавать coord как есть:var myMap = new ymaps.Map('map', {
        center: coord,
        zoom: 9,
        controls: ['zoomControl']
});Посмотреть пример.
Или сразу, в скрипт передавать массив, а не строку:var coord = [<?=$data['coords']?>];