Member 13208052 Ответов: 1

Как добавить значения в базу данных mysql с помощью PHP


Теперь я могу добавлять значения в свою базу данных, но только строки, потому что когда я пытаюсь добавить числа, SQL автоматически ставит эти значения в 0, и я не знаю почему...

Что я уже пробовал:

<html>
   <head>
	<meta charset="utf-8">
	<link rel="shortcut icon" href="favicon.ico"/>
	<center>
	<title>Añadir Libro</title>
   </head>
   <body>
   <body background="backg.jpg">
	<p style="color:black">Desde aqui podremos <ins>añadir libros
	</ins> a la libreria, especificando todas sus caractericticas.
	</p>
      <?php
      $titulo_libro = null;
      $autor_libro = null;
      $tema_libro = null;
      $paginas_libro = null;
      $tema_libro = null;
      $paginas_libro = null;
      $formatoUno_libro = null;
      $formatoDos_libro = null;
      $formatoTres_libro = null;
      $estado_libro = null;
         if (!($link=mysqli_connect("localhost","root","")))  
         {  
         echo "Error conectando a la base de datos.";  
         }  
         if (!mysqli_select_db($link, "libreria1617"))
         {
         echo "Error seleccionando la base de datos.";
                  } else if(isset($_POST['titulo_libro'])){
                  $titulo_libro = $_POST['titulo_libro'] ?? '';
                  $autor_libro = $_POST['autor_libro'] ?? '';
         			$tema_libro = $_POST['tema_libro'] ?? '';
         			$paginas_libro = $_POST['numeroPaginas'] ?? '';
         			$formatoUno_libro = $_POST['cartone'] ?? '';
         			$formatoDos_libro = $_POST['rustica'] ?? '';
        			   $formatoTres_libro = $_POST['tapadura'] ?? '';
         			$estado_libro = $_POST['estado'] ?? '';

                  $sql=mysqli_query($link, "INSERT INTO `libro` (`Titulo`, `Autor`, `Tema`, `NumPaginas`, `FormatoUno`, `FormatoDos`, `FormatoTres`, `Estado`)
                  VALUES ('$titulo_libro', '$autor_libro', '$tema_libro', '$paginas_libro', '$formatoUno_libro', '$formatoDos_libro', '$formatoTres_libro', '$estado_libro')") 
                  or die('Error: ' . mysqli_error($link));
                  if(! $sql ) {
                     die('Error al añadir el libro: ' . mysqli_error($link));
                  }
                  echo "Libro añadido: ".'<br />';
                  mysqli_close($link);
         	} else {
            ?>     
               <form method="post" action="annadirlibro.php">
                  <table width = "400" border = "0" cellspacing = "1" 

                     cellpadding = "2">
                  
                  	
                     <tr>
                        <td width = "100">Titulo del libro</td>
                        <td><input name = "titulo_libro" type = "text" 

                           id = "titulo_libro"></td>
                     </tr>
                  
                     <tr>
                        <td width = "100">Autor del libro</td>
                        <td><input name = "autor_libro" type = "text" 

                           id = "autor_libro"></td>
                     </tr>
                  
                     <tr>
                        <td width = "100">Tema del libro</td>
                        <td><input name = "tema_libro" type = "text" 

                           id = "tema_libro"></td>
                     </tr>

                     <tr>
                        <td width = "100">Numero de paginas del libro</td>
                        <td><input name = "paginas_libro" type = "text" 

                           id = "paginas_libro"></td>
                     </tr>
                
                     <tr>
                        <td width = "100">Formato Cartone (1 SI, 0 NO)</td>
                        <td><input name = "formatoUno_libro" type = "text" 

                           id = "formatoUno_libro"></td>
                     </tr>
                     <tr>
                        <td width = "100">Formato Rustica (1 SI, 0 NO)</td>
                        <td><input name = "formatoDos_libro" type = "text" 

                           id = "formatoDos_libro"></td>
                     </tr>

                     <tr>
                        <td width = "100">Formato TapaDura (1 SI, 0 NO)</td>
                        <td><input name = "formatoTres_libro" type = "text" 

                           id = "formatoTres_libro"></td>
                     </tr>
                     <tr>
                        <td width = "100">Estado del libro (0 Normal, 1 Reedicion)</td>
                        <td><input name = "estado_libro" type = "text" 

                           id = "estado_libro"></td>
                     </tr>
                     <tr>
                        <td width = "100"> </td>
                        <td>
                           <input name = "button" type = "submit" id = "button" value = "Añadir libro">
                        </td>
                     </tr>
                  </table>
               </form>
                <?php } ?>
      </center>
   </body>
</html>

1 Ответов

Рейтинг:
6

Jochen Arndt

Проверять $_POST переменные используют функцию PHP: isset-руководство пользователя[^]:

//} else if($_POST['titulo_libro']){
} else if(isset($_POST['titulo_libro'])){
Это позволит проверить, существует ли переменная без генерации уведомления "неопределенный индекс".

Если вы также хотите убедиться, что переменная не пуста (пустая строка или массив, ноль, ноль или ложь), используйте функцию PHP: пустой-ручной[^]:
} else if(!empty($_POST['titulo_libro'])){


Member 13208052

Спасибо Вам за это, эта проблема решена, но теперь у меня есть эта проблема
Предупреждение: mysqli_error () ожидает ровно 1 параметр, 0 задан в C:\xampp\htdocs\annadirlibro.php на линии 45

Jochen Arndt

Видеть PHP: mysqli::$error-Manual

Воспользуйся $mysqli->error или mysqli_error($link)

Member 13208052

Хорошо, спасибо, но у меня есть еще одна проблема...
Ошибка al añadir el libro: у вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с "1" в строке 1

Jochen Arndt

Видеть mysql_query
Первым параметром должна быть строка запроса, а необязательным вторым параметром-строка запроса. $link но вы проходите мимо $link в качестве первого параметра.

Вы тоже звоните mysql_query() два раза, когда вы передаете результат первого вызова второму (опять же в неправильной позиции параметра).

Member 13208052

Спасибо за это, но я думаю, что $link должен быть первым параметром, а строковый запрос-вторым...
Кроме того, я обновил основной вопрос, потому что теперь я могу добавлять значения, но у меня возникают проблемы, когда я пытаюсь добавить числа в базу данных

Jochen Arndt

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

Вы читали ссылку из моего комментария (официальная документация PHP)?
Там написано:
"mixed mysql_query ( string $query [, resource $link_identifier = NULL ] )"

Таким образом, строка запроса должна быть первым параметром.

Member 13208052

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

Jochen Arndt

Смотрите мой ответ на ваш новый вопрос.