php / mysql新手所以请耐心等待。
以下代码通过上一张表格中的表格提供数据。插入记录时我没有收到任何错误消息,但是当我检查表时,empno和buntg字段的最后一个字符丢失了。对于empno,屏幕上显示0001,但表中插入的值为000.对于buntg,显示14000101但插入了1400010。没有问题与opr tho。
<?php
$wopr = $_POST['operations'];
$empno = $_POST['empno2'];
$btg = $_POST['buntag2'];
echo $empno . "<br/>" . $btg . "<br/>" . $wopr . "<br/>";
$loaddat = "INSERT INTO ticket_data (empno,buntg,opr) VALUES ('$empno', '$btg', '$wopr')";
mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("test_database") or die (mysql_error());
mysql_query($loaddat) or die (mysql_error());
echo "Ticket Submitted. <br/> Ref. No: " . mysql_insert_id() . "<br/> Thank You.";
mysql_close();
?>
在ticket_data表中,empno是varchar(4),buntg是varchar(8),opr是文本。排序规则是utf8_unicode_ci。当我不使用变量并对$ loaddat上的值进行硬编码时,它们会正确插入,所以我不确定这是否与排序有关。
我在Windows 7上使用XAMPP v.3.2.1。提前感谢。
编辑:问题部分由以下评论回答。但是,我仍然不明白为什么我必须使用不同的varchar长度来插入相同的数据,但使用不同的方法。也许有人可以就此启发我。干杯!
编辑#2:我发现更改varchar长度可以插入数据,但我的验证方法现在不起作用。更改所有相关表中的数据类型后,下面的查询现在返回所有出现的opr,无论“NOT IN”条件如何。
SELECT style_ops.opr FROM style_ops WHERE style_ops.style='$sty' AND style_ops.opr NOT IN (SELECT ticket_data.opr FROM ticket_data WHERE ticket_data.buntg='$btg')
当他们在varchar 4和8中时,一切都有效,除了插入。我回到4和8,并希望有人能解决我原来的问题。再次感谢!
编辑#3:问题解决了。感谢下面的评论,我查看了我的输入字段,并在表单html代码中找到了前导和尾随空格。拿出来,现在它的工作甜蜜。注意到SQLI和相应的修改代码。
感谢。