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 Ответов

Рейтинг:
2

Jochen Arndt

Так же как и в случае с вашим существующим запросом, который передает строки, но не заключает числовые переменные параметров в кавычки:

$query = "INSERT INTO tablename (`strparam`, `numparam`) VALUES ('$strparam', $numparam)";
$result = mysqli($query);
Смотреть также РНР: Подготовленные Заявления-Руководство Пользователя[^].

Вы также можете подготовить оператор и привязать параметры. Видеть PHP: mysqli:: prepare-Manual[^] и PHP: mysqli_stmt:: bind_param-руководство пользователя[^].

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


Member 13208052

Извините, но я не понимаю, что вы пытаетесь сказать...

Member 13208052

???

Jochen Arndt

Вам не нужно указывать значение параметра.

Если вы все еще получаете добавленный ноль, проверьте значение вашего числового параметра (например, распечатав командную строку SQL).