首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:1265SQLSTATE: 01000 (WARN_DATA_TRUNCATED)

错误:1265SQLSTATE: 01000 (WARN_DATA_TRUNCATED)
EN

Stack Overflow用户
提问于 2013-10-29 05:32:34
回答 1查看 9.5K关注 0票数 3

首先,如果我写了一些无关紧要的东西,我很抱歉,但我通常不用英语写作,这对我来说有点难。其次,作为程序员,我是一个新手,所以我的问题可能太简单和明显了(我保证在这里提问之前我已经尝试过找到答案)。

嗯,我想练习php和mysql,所以我想做一个bbdd和一个GUI来控制它。下面是我遇到问题的代码:

MySql (v5.6.12):

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `personaje` (

`id_personaje` int(3) NOT NULL AUTO_INCREMENT,
`nombre` varchar(30) NOT NULL,
`servidor` varchar(25) NOT NULL,
`nivel` int(3) NOT NULL,
`faccion` varchar(10) NOT NULL,
`clase` varchar(25) NOT NULL,
`raza` char(30) NOT NULL,
`profesion1` varchar(20) NOT NULL,
`nivel1` int(4) NOT NULL,
`profesion2` varchar(20) NOT NULL,
`nivel2` int(4) NOT NULL,
`nivel_coc` int(4) NOT NULL,
`nivel_pes` int(4) NOT NULL,
`nivel_arqu` int(4) NOT NULL,
`nivel_prim` int(4) NOT NULL,

PRIMARY KEY (`id_personaje`),
UNIQUE KEY `raza` (`raza`),
UNIQUE KEY `clase` (`clase`),
UNIQUE KEY `prof1` (`profesion1`),
UNIQUE KEY `prof2` (`profesion2`),
UNIQUE KEY `faccion` (`faccion`)
) 
ENGINE=InnoDB 

PHP(v5.4.12):

代码语言:javascript
复制
    <?php


    //Recoger los datos que llegan

    $nombre = $_POST['nombreChar'];
    $raza = $_POST['razaChar'];
    $clase = $_POST['claseChar'];
    $servidor = $_POST['servidorChar'];
    $faccion = $_POST['faccionChar'];
    $nivel = $_POST['nivelChar'];
    settype($nivel,"int");
    $prof1 = $_POST['prof1Char'];
    $lvlpr1 = $_POST['lvlpr1Char'];
    $prof2 = $_POST['prof2Char'];
    $lvlpr2 = $_POST['lvlpr2Char'];
    $nivel_coc = $_POST['nivel_cocChar'];
    $nivel_arqu = $_POST['nivel_arquChar'];
    $nivel_pes = $_POST['nivel_pesChar'];
    $nivel_prim = $_POST['nivel_primChar'];
    $muestra = gettype($nivel);

     //Conectandonos con la base de datos
   $conexion = mysql_connect(/* ... */);
    mysql_select_db (/* ... */, $conexion) OR die ("No se puede conectar");

    //Comprobar que no haya otro personaje repetido
   /* $Consulta_per = "SELECT nombre, servidor FROM personaje WHERE nombre =
        '".$nombre."' && servidor = '".$servidor."'";
    $busqueda = mysql_query($Consulta_per,$conexion) or die ("Error en busqueda " . mysql_error());       
    if (!$busqueda)
        */
    $res = mysql_query("INSERT INTO personaje (nombre, servidor, nivel, faccion, 
        clase, raza, profesion1, nivel1, profesion2, nivel2, nivel_coc, 
        nivel_pes, nivel_arqu, nivel_prim) VALUE ('$nombre','$servidor',
            '$nivel,','$faccion','$clase','$raza','$prof1','$lvlpr1',
                '$prof2','$lvlpr2','$nivel_coc','$nivel_pes','$nivel_arqu',
                    '$nivel_prim')",$conexion)
    or die ("No se pudo insertar " . mysql_error() ." ". $nivel . $muestra );// this line show the error
    echo "Insertado con exito";
    mysql_close($conexion);

    ?>

随之而来的形式是:

代码语言:javascript
复制
    <FORM method="POST" action="crear-personaje.php">
        Nombre <INPUT type="text" name="nombreChar" id="nombreChar" value="Nombre"></br>
        Raza <INPUT type="text" name="razaChar" id="razaChar" value="Raza"></br>
        Facción <INPUT type="text" name="faccionChar" id="faccionChar" value="Facción"></br>
        Clase <INPUT type="text" name="claseChar" id="claseChar" value="Clase"></br>
        Servidor <INPUT type="text" name="servidorChar" id="servidorChar" value="Servidor"></br>
        Nivel <INPUT type="number" name="nivelChar" id="nivelChar" value="1"></br>
        Profesión 1 <INPUT type="text" name="prof1Char" id="prof1Char" value="Profesion1"></br>
        Nivel de profesión 1 <INPUT type="text" name="lvlpr1Char" id="lvlpr1Char" value="1"></br>
        Profesion 2 <INPUT type="text" name="prof2Char" id="prof2Char" value="Profesion2"></br>
        Nivel de profesion 2 <INPUT type="text" name="lvlpr2Char" id="lvlpr2Char" value="1"></br>
        Nivel cocina<INPUT type="text" name="nivel_cocChar" id="nivel_cocChar" value="1"></br>
        Nivel pesca<INPUT type="text" name="nivel_pesChar" id="nivel_pesChar" value="1"></br>
        Nivel primeros auxilios<INPUT type="text" name="nivel_primChar" id="nivel_primChar" value="1"></br>
        Nivel arqueología<INPUT type="text" name="nivel_arquChar" id="nivel_arquChar" value="1"></br>

        <INPUT type="submit" NAME="enviar" VALUE="Dar de alta!" id="enviar">

    </FORM>

Apache版本2.4.4

一切都会好起来的但是..。不是的。当我试图在"nivel“字段中插入一个整数值(如87或1)时,mysql给出了下一个错误:

"No se pudo insertar Data truncated for column 'nivel' at row 1 1integer",就像我在代码中写的注释。

("No se pudo insert pudo“表示”无法插入“)。

正如您所看到的,我强制将变量$nivel转换为整数,并且正确识别(这就是我将$nivel和$muestra放在句中的原因)。我尝试在MySql中将类型为"nivel“的变量从int (3)改为Varchar (3),并让我介绍一下字符,但是...我更喜欢使用int类型(很明显,字符的级别是一个整数)。

有人知道为什么MySql会给我这个错误吗?我能做些什么来解决这个问题?

感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-29 05:44:55

在您的INSERT SQL中有'$nivel‘,注意引号内的逗号

代码语言:javascript
复制
 $res = mysql_query("INSERT INTO personaje (nombre, servidor, nivel, faccion, 
        clase, raza, profesion1, nivel1, profesion2, nivel2, nivel_coc, 
        nivel_pes, nivel_arqu, nivel_prim) VALUE ('$nombre','$servidor',
            '$nivel,', ...

这只是问题中的一个打字错误吗?如果不是,这可能是导致您的错误的原因,因为MySQL正在努力将'87,'转换为整数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19645457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档