Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么mysql会丢弃浮点值?_Php_Html_Mysql - Fatal编程技术网

Php 为什么mysql会丢弃浮点值?

Php 为什么mysql会丢弃浮点值?,php,html,mysql,Php,Html,Mysql,一切正常,但现在发生了什么我不能说。实际上,mysql不存储任何浮点值,所有其他值(如integer、varchar等)都可以接受。我张贴了一部分代码 php中的查询 $que_cinstructors = " INSERT INTO course_instructors ( usn, i1, i2, i3, i4, i5, i6, i7, i8, i9 ) VALUES ( :usn, :i1, :i2, :i3, :i4,

一切正常,但现在发生了什么我不能说。实际上,mysql不存储任何浮点值,所有其他值(如integer、varchar等)都可以接受。我张贴了一部分代码

php中的查询

$que_cinstructors = "
    INSERT INTO 
        course_instructors 
        ( usn, i1, i2, i3, i4, i5, i6, i7, i8, i9 )
    VALUES
        ( :usn, :i1, :i2, :i3, :i4, :i5, :i6, :i7, :i8, :i9 )";
$query_params3 = array( ':usn' => $_POST['usn'],
    ':i1' => $_POST['i1'],
    ':i2' => $_POST['i2'],
    ':i3' => $_POST['i3'],
    ':i4' => $_POST['i4'],
    ':i5' => $_POST['i5'], 
    ':i6' => $_POST['i6'],
    ':i7' => $_POST['i7'],
    ':i8' => $_POST['i8'],
    ':i9' => $_POST['i9']
);
$statement3 = $db->prepare($que_cinstructors);
$result3 = $statement3->execute($query_params3);

$que_ccredits = "
    INSERT INTO 
        course_credits 
        ( usn, c1, c2, c3, c4, c5, c6, c7, c8, c9, total ) 
    VALUES ( :usn, :c1, :c2, :c3, :c4, :c5, :c6, :c7, :c8, :c9, :total )";
$query_params4 = array( ':usn' => $_POST['usn'],
    ':c1' => $_POST['c1'],
    ':c2' => $_POST['c2'],
    ':c3' => $_POST['c3'], 
    ':c4' => $_POST['c4'], 
    ':c5' => $_POST['c5'],
    ':c6' => $_POST['c6'], 
    ':c7' => $_POST['c7'],
    ':c8' => $_POST['c8'],
    ':c9' => $_POST['c9'],
    ':total' => $_POST['total']
);
$statement4 = $db->prepare($que_ccredits);
$result4 = $statement4->execute($query_params4);
从以上两个查询中,第一个查询存储名称,这很好。但第二个是存储浮点值。这里我从会话变量获取usn。第一个可以插入,但第二个不能存储任何内容

来自.sql的数据库

CREATE TABLE IF NOT EXISTS `course_instructors` (
`i_id` int(11) NOT NULL AUTO_INCREMENT,
`usn` varchar(7) NOT NULL,
`i1` varchar(50) NOT NULL,
`i2` varchar(50) NOT NULL,
`i3` varchar(50) NOT NULL,
`i4` varchar(50) NOT NULL,
`i5` varchar(50) NOT NULL,
`i6` varchar(50) NOT NULL,
`i7` varchar(50) NOT NULL,
`i8` varchar(50) NOT NULL,
`i9` varchar(50) NOT NULL,
PRIMARY KEY (`i_id`),
UNIQUE KEY `usn` (`usn`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

    CREATE TABLE IF NOT EXISTS `course_credits` (
  `c_id` int(11) NOT NULL AUTO_INCREMENT,
  `usn` varchar(7) NOT NULL,
  `c1` float NOT NULL,
  `c2` float NOT NULL,
  `c3` float NOT NULL,
  `c4` float NOT NULL,
  `c5` float NOT NULL,
 `c6` float NOT NULL,
 `c7` float NOT NULL,
 `c8` float NOT NULL,
 `c9` float NOT NULL,
 `total` float NOT NULL,
  PRIMARY KEY (`c_id`),
  UNIQUE KEY `usn` (`usn`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
一切正常。我正在处理项目的其他部分,今天当我试图提交时,我遇到了这个问题。这让我发疯了请帮帮我
文本字段名称正确。

您似乎没有执行$stmt->bind_param()。 这可能会很有帮助,尽管这篇文章似乎与此相矛盾,并且在各种PHP版本中也提到了PDO的一些错误版本。 但是他们确实说使用$stmt->bind_param(),但是可以使用PDO::param_STR

不是很好,如果你发布一些使用旧mysql代码的代码,你会被淹没在评论中说不要使用它。 当你使用PDO时,你会发现它不是防弹的。
生活不是一个海滩。

到底是如何“丢弃”截断值的?3.1415变为3?完全不正确的值?(3.1415变为17)。结果是空值?你确定是mysql做的而不是你的代码吗?是否验证了$\u POST值是否正确?是否确定在输入中使用了正确的十进制分隔符?插入数据时是否有任何警告?O_oIt很可能是代码中的问题,而不是MySQL。学会自己调试代码。在执行查询之前转储查询和所有参数,并分析问题。阅读DB API发出错误信号的方法并加以利用。当你通过键入某人的名字来ping某人时,确保你写下了这个小弹出窗口所说的内容。所以要ping“Marc B”,你需要放@MarcB。您还可以使用
选项卡
自动完成。