Вставка нескольких значений в MySQL сразу

может ли кто-нибудь пролить свет на то, почему этот PHP / MySQL не работает? В принципе, мне нужно вставлять сразу несколько строк из формы, поэтому будет несколько полей имени, несколько коротких, средних, длинных полей и т. Д. Im, получая эту ошибку:

Notice: Undefined variable: Short1 in C:\xampp\htdocs\process.php on line 95 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 'Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) VAL' at line 2 

Вот мой PHP

 <?php $host = "localhost"; $databasename = "pe_results"; $databaseusername = "root"; $databasepassword = ""; $conn = mysql_connect("$host", "$databaseusername", "$databasepassword"); mysql_select_db("$databasename", $conn); if (isset($_POST['Name1'])) { $Name1 = $_POST['Name1']; } if (isset($_POST['Short1'])) { $Short1 = $_POST['Short1']; } if (isset($_POST['Med1'])) { $Med1 = $_POST['Med1']; } if (isset($_POST['Long1'])) { $Long1 = $_POST['Long1']; } if (isset($_POST['VLong1'])) { $VLong1 = $_POST['VLong1']; } if (isset($_POST['Extreme1'])) { $Extreme1 = $_POST['Extreme1']; } if (isset($_POST['LJump1'])) { $LJump1 = $_POST['LJump1']; } if (isset($_POST['HJump1'])) { $HJump1 = $_POST['HJump1']; } if (isset($_POST['Shotputt1'])) { $Shotputt1 = $_POST['Shotputt1']; } if (isset($_POST['Discuss1'])) { $Discuss1 = $_POST['Discuss1']; } if (isset($_POST['Javelin1'])) { $Javelin1 = $_POST['Javelin1']; } if (isset($_POST['Date'])) { $Date = $_POST['Date']; } if (isset($_POST['Year'])) { $Year = $_POST['Year']; } // Sector 2 */ if (isset($_POST['Name2'])) { $Name2 = $_POST['Name2']; } if (isset($_POST['Short2'])) { $Short2 = $_POST['Short2']; } if (isset($_POST['Med2'])) { $Med2 = $_POST['Med2']; } if (isset($_POST['Long2'])) { $Long2 = $_POST['Long2']; } if (isset($_POST['VLong2'])) { $VLong2 = $_POST['VLong2']; } if (isset($_POST['Extreme2'])) { $Extreme2 = $_POST['Extreme2']; } if (isset($_POST['LJump2'])) { $LJump2 = $_POST['LJump2']; } if (isset($_POST['HJump2'])) { $HJump2 = $_POST['HJump2']; } if (isset($_POST['Shotputt2'])) { $Shotputt2 = $_POST['Shotputt2']; } if (isset($_POST['Discuss2'])) { $Discuss2 = $_POST['Discuss2']; } if (isset($_POST['Javelin2'])) { $Javelin2 = $_POST['Javelin2']; } if (isset($_POST['Date'])) { $Date = $_POST['Date']; } if (isset($_POST['Year'])) { $Year = $_POST['Year']; } $sql="INSERT INTO results_main (Name, Short, Med, Long, VLong, Extreme, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) VALUES ('$Name1', '$Short1', '$Med1', '$Long1', '$VLong1', '$Extreme1', '$LJump1', '$HJump1', '$Shotputt1', '$Discuss1', '$Javelin1', '$Date', '$Year'), ('$Name2', '$Short2', '$Med2', '$Long2', '$VLong2', '$Extreme2', '$LJump2', '$HJump2', '$Shotputt2', '$Discuss2', '$Javelin2', '$Date', '$Year'); "; $result = mysql_query($sql) or die(mysql_error()); // close connection mysql_close($conn); ?> 

Новое сообщение об ошибке для JW

 Notice: Undefined variable: Short1 in C:\xampp\htdocs\process.php on line 95 INSERT INTO results_main (`Name`, `Short`, `Med`, `Long`, `VLong`, `Extreme`, `LJump`, `HJump`, `Shotputt`, `Discuss`, `Javelin`, `Date`, `Year`) VALUES (`1`, ``, `1`, `1`, `1`, `1`, `1`, `1`, `1`, `1`, `1`, `2013-04-26`, `10`), (`2`, `2`, `2`, `2`, `2`, `2`, `2`, `2`, `2`, `2`, `2`, `2013-04-26`, `10`); Unknown column '1' in 'field list' 

    LONG – зарезервированное ключевое слово и, как оказалось, имя вашего столбца. Чтобы избежать синтаксической ошибки, имя столбца должно быть белым с обратными окнами.

     INSERT INTO results_main(Name, Short, Med, `Long`, VLong, ...) VALUES (....) 
    • Список зарезервированных ключевых слов MySQL

    Если у вас есть привилегия для изменения столбца, измените имя на ключевое слово без сохранения, чтобы избежать проблем с возвратом в будущее.


    В качестве побочного элемента запрос уязвим с помощью SQL Injection если значение (значения) переменных было получено извне. Пожалуйста, ознакомьтесь с приведенной ниже статьей, чтобы узнать, как ее предотвратить. Используя PreparedStatements вы можете избавиться от использования одинарных кавычек вокруг значений.

    • Как предотвратить SQL-инъекцию в PHP?

    Проверьте свой массив сообщений, у вас что-то не так с $ _POST ['Short1'];

    Также не используйте зарезервированные ключевые слова MYSQL, Long – зарезервированное ключевое слово. Если вы используете, вам следует избегать

     `Long` 

    Я предлагаю сбросить ваш массив $ _POST и посмотреть на него. В соответствии с вашими кодами переменные устанавливаются только в том случае, если в массиве $ _POST есть значение.