$sql = "UPDATE galleries SET name='$name', desc='$desc', mainthumb='$mt'
WHERE id='$id'";
это порождает ошибку для какой-то богом забытой причины. Я должен быть слишком усталым, потому что я этого не вижу.
Я подтвердил, что все значения публикуются. Что еще хуже, это почти точная копия любого запроса, который отлично работает.
Update:
Это было решено. Это был факт, что desc не имел обратных ссылок. Я также собираюсь использовать PDO, как было предложено.
Является ли desc не ключевым словом, которое нельзя использовать в качестве имени столбца?
У вас есть столбец с именем desc
, который является зарезервированное слово. Вам нужно будет процитировать его с помощью обратных ссылок.
`desc`='$desc'
Вы дезактивировали все параметры, прежде чем смешивать их с оператором sql? desc
является зарезервированное слово в MySQL, вы должны явно отметьте его как идентификатор:
Идентификатор может быть указан или не определен. Если идентификатор содержит специальные символы или зарезервированное слово, вы должны указывать его всякий раз, когда вы ссылаетесь на него. [...]
Символом кавычки идентификатора является обратная сторона ( "`" ):
$mysql = mysql_connect(...
$sql = "
UPDATE
galleries
SET
name='" . mysql_real_escape_string($_POST['name'], $mysql) . "',
`desc`='" . mysql_real_escape_string($_POST['desc'], $mysql) . "',
mainthumb='" . mysql_real_escape_string($_POST['mt'], $mysql) . "'
WHERE
id='" . mysql_real_escape_string($_POST['id'], $mysql) . "'
";
или даже лучше: использовать подготовленные отчеты
mysqli
.
echo $sql
и посмотреть, что это на самом деле. Это похоже на легкую цель для SQL-инъекции, если вы не позаботились об этом.
$sql = "UPDATE `galleries` SET
name='".$name."',
desc='".$desc."',
mainthumb='".$mt."'
WHERE id='".$id."'";
Это может быть один из альтернативных способов обработки. Хотя я бы пошел PDO, как сказал VolkerK. Я также хотел бы Эхо посмотреть, что он будет выводить. Также, как предположил Бен, Desc может быть зарезервированным словом.
да, убедитесь, что вы сначала дезинфицируете данные, используя mysql_real_escape_string.
Затем повторите ошибку mysql (mysql_error()), это даст вам больше подсказок о том, где ошибка,
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("nonexistentdb", $link);
echo mysql_errno($link) . ": " . mysql_error($link). "\n";
mysql_select_db("kossu", $link);
mysql_query("SELECT * FROM nonexistenttable", $link);
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
?>
SELECT desc FROM Table1
не удалось, но процитировал это успешно.