Существует множество вопросов относительно Stackoverflow по этому поводу, но я до сих пор не смог решить эту проблему.
Я пытаюсь поместить несколько переменных в глобальные данные атрибута- *. Выход должен быть:
data-info="23;thisWeek"
23 приходит из базы данных: $ row [«id»], а thisWeek из переменной: $ categoryori1.
Я пробовал:
echo "<tr data-info=" .fixSlashes($row["id"], $categori1); " class=\"tableclass\"><td>"
затем
<?php
function fixSlashes($idP, $categoriP){
$str = addslashes($idP . ";" .$categoriP);
return $str;
}
?>
Но что-то идет не так. Нет сообщения об ошибке, но поведение не так. Это работает, если я просто напишу:
echo "<tr data-info="data-info="23;thisWeek" class=\"tableclass\"><td>"
Похоже, вы не выводите HTML правильно. Обратите внимание на экранированные кавычки вокруг функции исправления слэшей. Также обратите внимание на «.» вместо точки с запятой.
"<tr data-info=\"" .fixSlashes($row["id"], $categori1) . "\" class=\"tableclass\"><td>"
Если вы хотите увидеть все ошибки, включите следующий код. Это бы поймало ошибку с запятой.
error_reporting(E_ALL);
ini_set('display_errors', '1');
echo "<tr data-info=" .fixSlashes($row["id"], $categori1); " class=\"tableclass\"><td>"
У вас есть точка с запятой (;), где должен быть оператор concat (.). Хм, после функции fixSlashes. Перед строкой суффикса класса.
Вы заканчиваете оператор echo преждевременно, до того как «class = \» tableclass \ «>» может быть добавлен.
Я ненавижу воровать, но половина ответов получает одну проблему, а половина — другую проблему.
Вам нужно исправить точку с запятой в точку (concat), как сказал @MingShun.
Вам нужно получить кавычки (экранированные) вокруг ваших данных, как сказал @JimmyScray.
echo "<tr data-info=\"" .fixSlashes($row["id"]. $categori1). "\" class=\"tableclass\"><td>";
Используйте escape-последовательность для отображения двойных кавычек и используйте одинарные кавычки для id (т.е. $ row [‘id’])
echo "<tr data-info=\" $row['id'];$categori1\" class=\"tableclass\"><td>";