Ситуация такая. В базе данных есть таблица, допустим "new", следующей структуры: Код (Text): id int(10) auto_increment qw text cp1251_general_ci we text cp1251_general_ci Есть на сервере php-скрипт который должен добавлять новые строки в сию базу, такого вида: Код (Text): <? if($submit) { $query="insert into new values('', '$qw', '$we')"; mysql_query($query); } ?> <form action="" method="post" id="inputform"> <input type="text" name="qw"> <input type="text" name="we"> <input type="submit" name="submit" value="Добавить"> </form> Скрипт включается в основной файл, в котором есть данные доступа к mysql с этим все нормально. Но! Не работает! Хоть ты тресни... В чем может быть причина браты?.. Помогите..
попробуй PHP: if(isset($_POST['submit'])) { $qw=addslashes($_POST['qw']); $we=addslashes($_POST['we']); $query="insert into new (qw,we) values('$qw', '$we')"; mysql_query($query); } print "<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\" id=\"inputform\">"; ?> <input type="text" name="qw"> <input type="text" name="we"> <input type="submit" name="submit" value="Добавить"> </form>
Причин несколько 1) не указан атрибут action для формы 2) поле id первичный ключ с auto_increment. Поэтому запрос на вставку неверный-первая запись может записаться, а все последующие будут иметь одинаковый с первой записью первичный ключ, что невозможно 3) если register_globals=off, то нужно использовать вместо переменных массив _POST
Попробовал как Вы написали - тоже не работает. В тоже время, на той же базе и хостинге есть такая таблица и скрипт, которые работают. Структура "this": Код (Text): id int(11) Нет Нет auto_increment name_rus varchar(256) cp1251_general_ci Нет Нет description_sec text cp1251_general_ci Нет Нет Скрипт: Код (Text): <? if($submit) { $query="INSERT into this VALUES('', '$name_rus', '$description_sec')"; mysql_query($query); } ?> <form action="" method="post"> <table border="0" cellpadding="3" cellspacing="3" bgcolor="f0f0f0" width="100%"> <tr bgcolor="fefefe"><td align="right">Название:</td><td><input name='name_rus' type='text' size='50'></td></tr> <tr bgcolor="fefefe"><td align="right">Описание:</td><td><textarea name='description_sec' cols='100' rows='25'></textarea></td></tr> <tr bgcolor="fefefe"><td align="right"></td><td><input type='submit' name='submit' value='Добавить'></td></tr> </table> </form> Как это объяснить?..
Velsevul Необходимо убедится в том, что: 1. данные пришли в том виде, в котором мы ожидаем. PHP: <?php if (isset($_POST['submit'])){ echo "<pre>"; print_r($_POST); echo "</pre>"; } 2. в запросе не сделали никаких случайных ошибок. PHP: <?php $query = "SELECT * ...."; mysql_query($query) or die("Mysql не может выполнить запрос: " . mysql_error());
Velsevul убедись 1)упомянутый скрипт подключается? 2)действительно ли в момент выполнения запроса на вставку установлено соединение с базой данных?
сделай Код (Text): mysql_query($query) or die(mysql_error()); полный код с дополнениями попробуй: PHP: <? if (isset($_POST['submit'])){ $query=" INSERT into `this` VALUES('', '".$_POST['name_rus']."', '".$_POST['description_sec']."') "; mysql_query($query) or die(mysql_error()); } else { echo 'ERROR submit<br>'; echo $_POST['name_rus'].'<br>'; echo $_POST['description_sec'].'<br>'; } ?> <form action="" method="post"> <table border="0" cellpadding="3" cellspacing="3" bgcolor="f0f0f0" width="100%"> <tr bgcolor="fefefe"><td align="right">Название:</td><td><input name='name_rus' type='text' size='50'></td></tr> <tr bgcolor="fefefe"><td align="right">Описание:</td><td><textarea name='description_sec' cols='100' rows='25'></textarea></td></tr> <tr bgcolor="fefefe"><td align="right"></td><td><input type='submit' name='submit' value='Добавить'></td></tr> </table> </form>
Добавьте эту функцию и замените mysql_query на debug_mysql_query И если скрипт доходит до вставки и возникает ошибка, он её напишет. PHP: <?php function debug_mysql_query( $query) { mysql_query( $query) OR print( '[' .mysql_errno() .']: ' .mysql_error() .'<br /><br />Used query:<br />' .$query); } ?>