Вставка в Mysql

 
0
 
PHP
ava
namra | 21.01.2013, 14:10
Подскажите почему данные не заносятся в MYSQL где ошибка?

  <?php
// функция конекта к таблице
function table($name_table){

$ins = "insert into ".$name_table." (num,vop,var1,var2,var3,var4,var5,otv) values (".$_POST['num'].",".$_POST['vopros'].",".$_POST['var1'].",".$_POST['var2'].",".$_POST['var3'].",".$_POST['var4'].",".$_POST['var5'].",".$_POST['otv'].")";
$res = mysql_query($ins);

  }


echo '<form method="post">';
echo '<select name="mySelect">';
echo '<option value="geograf9">География 9 класс</option>';
echo '<option value="math9">Математика 9 класс</option>';
echo '</select><br/><br/>';
echo '<p>Номер вопроса:<br/><textarea name="num" rows="1"></textarea></p>';
echo '<br /><br /> Вопрос:<br/><textarea name="vopros" rows="5"></textarea>';
echo '<p>A:<br/><textarea name="var1" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>B:<br/><textarea name="var2" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>C:<br/><textarea name="var3" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>D:<br/><textarea name="var4" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>E:<br/><textarea name="var5" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>Ответ<br/><textarea name="otv" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p> <input type="submit" name="submit" value="Сохранить" /></p>';
echo '</form>';



// скрипт вставки в таблицу

include('test.inc');  # содержит параметры соединения с базой данных
$connect = mysql_connect($host,$user,$password)
or die('He удалось подключиться к базе данных');
$db = mysql_select_db('db1086511_testd',$connect)
or die ('He удалось выбрать базу данных');
  

if( isset( $_POST['submit'] ) )
{
    switch( $_POST['mySelect'] )
    {
        case 'math9':
            table('clas_9');
            break;
        
        case 'geograf9':
            table('geograf');
            break;

    }
}
?>
Ответы (14)
ava
Gold Dragon | 21.01.2013, 13:26 #
скорее всего из-за ошибки в 17-й строке....

Добавлено позднее:
а вообще, причин может быть куча... Какие хоть ошибки выдаёт, есть ли вообще соединение с базой, что приходит из POST... А вообще попробуй просто исполнить запрос в любом SQL-менеджере... и сразу всё увидишь. можешь воспользоваться phpMyAdmin или HeidiSQL или любой другой
ava
Арантир | 21.01.2013, 13:33 #
namra, про экранирование спецсимволов слышали когда-нибудь? А про то, что строки в sql-запросах следует в кавычки заворачивать?
Приведите свой запрос в порядок для начала.


echo '<form method="post">';
echo '<select name="mySelect">';
echo '<option value="geograf9">География 9 класс</option>';
echo '<option value="math9">Математика 9 класс</option>';
echo '</select><br/><br/>';
echo '<p>Номер вопроса:<br/><textarea name="num" rows="1"></textarea></p>';
echo '<br /><br /> Вопрос:<br/><textarea name="vopros" rows="5"></textarea>';
echo '<p>A:<br/><textarea name="var1" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>B:<br/><textarea name="var2" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>C:<br/><textarea name="var3" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>D:<br/><textarea name="var4" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>E:<br/><textarea name="var5" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p>Ответ<br/><textarea name="otv" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>';
echo '<p> <input type="submit" name="submit" value="Сохранить" /></p>';
echo '</form>';
Ну кто ж так делает в наше то время...

?>
<form method="post">
<select name="mySelect">
<option value="geograf9">География 9 класс</option>
<option value="math9">Математика 9 класс</option>
</select><br/><br/>
<p>Номер вопроса:<br/><textarea name="num" rows="1"></textarea></p>
<br /><br /> Вопрос:<br/><textarea name="vopros" rows="5"></textarea>
<p>A:<br/><textarea name="var1" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>
<p>B:<br/><textarea name="var2" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>
<p>C:<br/><textarea name="var3" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>
<p>D:<br/><textarea name="var4" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>
<p>E:<br/><textarea name="var5" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>
<p>Ответ<br/><textarea name="otv" rows="1"></textarea>&nbsp;<input type="file" name="userfile[]" /></p>
<p> <input type="submit" name="submit" value="Сохранить" /></p>
</form>
<?php
ava
Gold Dragon | 21.01.2013, 13:37 #
Цитата (Arantir @  21.1.2013,  14:33 findReferencedText)
namra, про экранирование спецсимволов слышали когда-нибудь? А про то, что строки в sql-запросах следует в кавычки заворачивать?
давно уже пора пользоваться "подготовленными выражениями"
ava
namra | 21.01.2013, 13:43 #
Arantir,  про sql запросы в кавычках не понял ? У меня же стоят кавычки
ava
Sanchezzz | 21.01.2013, 13:51 #
namra,  а теперь сходите почитайте про sql injection
ava
Gold Dragon | 21.01.2013, 13:53 #
namra, ты бы хотя бы дамп таблицы привёл

и что у тебя $ins? покажи

Добавлено позднее:
Цитата (Sanchezzz @  21.1.2013,  14:51 findReferencedText)
namra,  а теперь сходите почитайте про sql injection 
Если человек только начинает работать с базой, то пусть уж сразу учит новое... Во-первых MySQL уже устарел, во-вторых, давно пора забыть об инъекциях и пользоваться как минимум MySQLi::stmt

Добавлено позднее:
и кстати...
Цитата (namra @  21.1.2013,  14:43 findReferencedText)
Arantir,  про sql запросы в кавычках не понял ? У меня же стоят кавычки

вместо этого
Цитата
... values (" . $_POST['num'] . "," . $_POST['vopros'] . "," . $_POST['var1'] . "....

должно быть это
Цитата
... values ('" . $_POST['num'] . "','" . $_POST['vopros'] . "','" . $_POST['var1'] . "'....

ava
namra | 21.01.2013, 14:08 #
Gold Dragon,  разобрался сделал экранирование спс, теперь выскачило другое внес строку в таблицу, затем обновляю страницу и последние данные которые я вносил заносятся опять, как будто в буфере что ли хранится?
ava
Арантир | 21.01.2013, 14:11 #
Цитата (Gold Dragon @  21.1.2013,  12:37 findReferencedText)
давно уже пора пользоваться "подготовленными выражениями"
Вы это скажите тому, кто пишет вот это:

"insert into ".$name_table." (num,vop,var1,var2,var3,var4,var5,otv) values
(".$_POST['num'].",".$_POST['vopros'].",".$_POST['var1'].",".$_POST['var2'].",".$_POST['var3'].",".$_POST['var4'].",".$_POST['var5'].",".$_POST['otv'].")"
Думаю, перед предподготовленными выражениями неплохо было бы знать синтаксис запросов сам по себе.

Добавлено позднее:
namra, при обновлении страницы с отправкой формы браузер у вас спрашивает "отправить ли данные еще раз?". Ну так вот...
ava
Gold Dragon | 21.01.2013, 14:19 #
namra, для лучшего понимания попробуй расстанавливать в предложениях знаки препинания  smile 

А по сути скажу.. у тебя вообще всё организовано не правильно.. Должно быть примерно так
- открываем форму для ввода данных
- отправляем данные
- получаем данные и проверяем их на корректность
- сохраняем данные в случае успеха или возвращаемся обратно на форму в случае ошибки
- после сохранения данных  делаем редирект на форму или куда там ещё

с другой стороны можешь:
- во-первых, перед сохранением проверить на существование подобной записи и уж в случае её отсутствия сохранять
- во-вторых, использовать REPLACE (с правильным построением индексов конечно)
- в-третьих, воспользоваться каким-то "индикатором", например куками или сессиями.. Объявляешь например какую-то переменную при первом добавлении. А при сохранении проверяешь её наличие..

Добавлено позднее:
Цитата (Arantir @  21.1.2013,  15:11 findReferencedText)
Думаю, перед предподготовленными выражениями неплохо было бы знать синтаксис запросов сам по себе.
я тоже когда-то боялся одного слова MySQL и PHP

А человеку лучше рассказать и показать, а не отсылать его куда-то что-то почитать.. Конечно это нужно!!! Но лучше показать и послать  smile 
ava
namra | 21.01.2013, 14:29 #
Gold Dragon, начинается знаки припинания и т.д. , все же понимают о чем я  говорю ! И с обновлением разобрался может кому надо будет

header('location: /index.php?ok'); 
exit();
ava
Арантир | 21.01.2013, 18:48 #
Цитата (Gold Dragon @  21.1.2013,  13:19 findReferencedText)
А человеку лучше рассказать и показать, а не отсылать его куда-то что-то почитать.. Конечно это нужно!!! Но лучше показать и послать  smile 

Из меня очень плохой учитель =)

Как по мне, так человек, который пытается написать приложение, что-то делающее, должен все же изучать документации по используемым в приложении аспектам. Хотя бы одним глазком глянуть, что ли...
Человек, совершенно не знающий синтаксиса sql-запросов, приходит и спрашивает "почему данные не заносятся в MYSQL, где ошибка?".

На первый взгляд namra просто кто-то или что-то заставляет все это делать. Ну просто не видно здравого желания достичь цели, одно желание доделать "лишь бы как-то да работало".
ava
Gold Dragon | 21.01.2013, 21:08 #
//offtop
Я давно на этом форуме и считаю что этот форум и есть очень большой справочник. И во многом даже лучше официальных источников. Здесь можно найти ответ практически на любой вопрос и даже не только ответ, но и мнение по его решению. По этому считал и считаю, что нужно посылать сюда, а не от сюда  smile 

А что касается доков.. так если человек хочет учится то сам придёт к тому чтобы почитать сначала справочник.. Просто иногда так хочется чтобы всё заработало быстро.. а справочник читать долго.. smile 
ava
Sanchezzz | 21.01.2013, 22:10 #
Вот именно хочется всем и каждому, но так не бывает должны быть препятствия и трудности.  smile 
ava
baldina | 22.01.2013, 02:53 #
 smile 
Цитата (Gold Dragon @  21.1.2013,  21:08 findReferencedText)
Я давно на этом форуме и считаю что этот форум и есть очень большой справочник.

не большой. и совсем не справочник.

и уж никак не замена книг и документации.
здесь общаются, здесь могут помочь - навести на мысль (это думаю самое ценное), здесь даже что-то могут написать за кого-то, но не более. 
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить