Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
113 lines
3.7 KiB
PHP
113 lines
3.7 KiB
PHP
<?php
|
||
/**
|
||
* Проверка конкретного комментария по ID
|
||
* Вызов: https://crm.clientright.ru/scripts/check_specific_comment.php?id=519716
|
||
*/
|
||
error_reporting(E_ALL);
|
||
ini_set('display_errors', '1');
|
||
header('Content-Type: text/plain; charset=utf-8');
|
||
|
||
chdir(dirname(__DIR__));
|
||
require_once 'config.inc.php';
|
||
|
||
$comment_id = isset($_GET['id']) ? (int)$_GET['id'] : 519716;
|
||
|
||
// Прямое подключение к БД
|
||
$mysqli = new mysqli($dbconfig['db_hostname'], $dbconfig['db_username'], $dbconfig['db_password'], $dbconfig['db_name']);
|
||
$mysqli->set_charset('utf8');
|
||
|
||
if ($mysqli->connect_error) {
|
||
die("Ошибка подключения: " . $mysqli->connect_error);
|
||
}
|
||
|
||
echo "Проверка комментария ID={$comment_id}\n";
|
||
echo str_repeat('=', 70) . "\n\n";
|
||
|
||
// 1. Проверка vtiger_crmentity
|
||
$stmt = $mysqli->prepare("SELECT * FROM vtiger_crmentity WHERE crmid = ?");
|
||
$stmt->bind_param('i', $comment_id);
|
||
$stmt->execute();
|
||
$result = $stmt->get_result();
|
||
|
||
if ($result->num_rows === 0) {
|
||
echo "❌ Запись в vtiger_crmentity НЕ НАЙДЕНА!\n";
|
||
} else {
|
||
echo "✅ vtiger_crmentity:\n";
|
||
$row = $result->fetch_assoc();
|
||
foreach ($row as $key => $value) {
|
||
echo " {$key}: " . ($value ?? 'NULL') . "\n";
|
||
}
|
||
}
|
||
echo "\n";
|
||
|
||
// 2. Проверка vtiger_modcomments
|
||
$stmt = $mysqli->prepare("SELECT * FROM vtiger_modcomments WHERE modcommentsid = ?");
|
||
$stmt->bind_param('i', $comment_id);
|
||
$stmt->execute();
|
||
$result = $stmt->get_result();
|
||
|
||
if ($result->num_rows === 0) {
|
||
echo "❌ Запись в vtiger_modcomments НЕ НАЙДЕНА!\n";
|
||
} else {
|
||
echo "✅ vtiger_modcomments:\n";
|
||
$row = $result->fetch_assoc();
|
||
foreach ($row as $key => $value) {
|
||
if ($key === 'commentcontent') {
|
||
echo " {$key}: " . mb_substr($value, 0, 100, 'UTF-8') . "...\n";
|
||
} else {
|
||
echo " {$key}: " . ($value ?? 'NULL') . "\n";
|
||
}
|
||
}
|
||
}
|
||
echo "\n";
|
||
|
||
// 3. Проверка vtiger_modcommentscf
|
||
$stmt = $mysqli->prepare("SELECT * FROM vtiger_modcommentscf WHERE modcommentsid = ?");
|
||
$stmt->bind_param('i', $comment_id);
|
||
$stmt->execute();
|
||
$result = $stmt->get_result();
|
||
|
||
if ($result->num_rows === 0) {
|
||
echo "❌ Запись в vtiger_modcommentscf НЕ НАЙДЕНА!\n";
|
||
} else {
|
||
echo "✅ vtiger_modcommentscf:\n";
|
||
$row = $result->fetch_assoc();
|
||
foreach ($row as $key => $value) {
|
||
echo " {$key}: " . ($value ?? 'NULL') . "\n";
|
||
}
|
||
}
|
||
echo "\n";
|
||
|
||
// 4. Попытка выборки с JOIN (как в CRM)
|
||
$stmt = $mysqli->prepare("
|
||
SELECT m.modcommentsid, m.commentcontent, m.related_to, m.channel,
|
||
e.smownerid, e.deleted, e.setype
|
||
FROM vtiger_modcomments m
|
||
INNER JOIN vtiger_crmentity e ON e.crmid = m.modcommentsid
|
||
INNER JOIN vtiger_modcommentscf c ON c.modcommentsid = m.modcommentsid
|
||
WHERE m.modcommentsid = ? AND e.deleted = 0
|
||
");
|
||
$stmt->bind_param('i', $comment_id);
|
||
$stmt->execute();
|
||
$result = $stmt->get_result();
|
||
|
||
echo str_repeat('=', 70) . "\n";
|
||
if ($result->num_rows === 0) {
|
||
echo "❌ С JOIN (как в CRM) — комментарий НЕ ПОПАДАЕТ в выборку!\n";
|
||
echo " Возможные причины:\n";
|
||
echo " - deleted = 1 в vtiger_crmentity\n";
|
||
echo " - Нет записи в vtiger_modcommentscf\n";
|
||
} else {
|
||
echo "✅ С JOIN (как в CRM) — комментарий НАЙДЕН:\n";
|
||
$row = $result->fetch_assoc();
|
||
foreach ($row as $key => $value) {
|
||
if ($key === 'commentcontent') {
|
||
echo " {$key}: " . mb_substr($value, 0, 100, 'UTF-8') . "...\n";
|
||
} else {
|
||
echo " {$key}: " . ($value ?? 'NULL') . "\n";
|
||
}
|
||
}
|
||
}
|
||
|
||
$mysqli->close();
|