Странное различие между тем, что PHP говорит мне об ошибке, и моим кодом Вставить в Mysql Table? - PullRequest
0 голосов
/ 19 января 2012

Здравствуйте, я делаю простую вставку в таблицу из моего <php>, и она не работает, позвольте мне начать с кода:

<?php
include_once "connect.php";
$db_host="localhost";
$user_name="root";
$pass="";
$db_name="knight orders";
$con = mysql_connect("$db_host","$user_name","$pass") or die("There is a problem with the connection");
mysql_select_db("$db_name",$con) or die("There is a problem with the database");
$name="Default";
$rank=3;
//$name=$_POST['name'];
//$rank=$_POST['rank'];
$table_name="ordertemp";
$query="INSERT INTO '$table_name' ('Code','Name')VALUES ('$rank','$name')";
mysql_query($query,$con) or die("Problems!" . mysql_error());
mysql_close($con);
?>

Сейчас я работаю с некоторыми значениями по умолчаниюно я буду читать из формы позже, странная вещь, когда я проверяю результат mysql_error() в Firefox, он говорит мне:

Problems!You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''ordertemp' ('Code','Name')VALUES ('3','Default')' at line 1

Это меняет некоторые точки с запятойМожет ли это быть причиной моей ошибки, или если вы видели другие ошибки, пожалуйста, укажите их.

Ответы [ 3 ]

4 голосов
/ 19 января 2012

'$ table_name' не должно быть в кавычках: это имя таблицы, а не значение строкового столбца,

используйте при необходимости обратные пометки, но они не обязательны

3 голосов
/ 19 января 2012

В MySQL кавычки (') используются для обозначения строкового литерала.

Обратные метки (`) используются для обозначения «объектов» MySQL, таких как имена баз данных, имена таблиц и столбцов.

2 голосов
/ 19 января 2012

Не используйте кавычки для имен таблиц и столбцов.Вместо этого вы можете использовать обратные пометки "` "или просто оставить кавычки:

$query = "INSERT INTO `{$table_name}` (`Code`, `Name`) VALUES ('{$rank}', '{$name}')";

PS: Никогда когда-либо вставлять небезопасную строковую переменную, такую ​​как $name=$_POST['name'];, прямо в ваши операторы SQL.Это делает ваше приложение уязвимым для SQL-инъекций.Смотрите здесь для получения дополнительной информации: Как я могу предотвратить внедрение SQL в PHP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...