mysql 向数据库中插入一项数据
orderNo是订单号应该自增的,但是我不会,所以就只是随便赋了一个值
session_start();
$corn=mysql_connect('localhost','root','');
mysql_query('set names UTF8',$corn);
if (!$corn) {
die('Could not connect: ' . mysql_error());
}
$db_selected=mysql_select_db( "daydream" ,$corn);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
$time=date("Ymd");
echo $time;
$id=$_GET['id'];
$presult=mysql_query("select * from production where proNo=$id");
$pinfo=mysql_fetch_array($presult);
$sum=$_POST['proNum']*$pinfo['proPrice'];
$num=12;
$sql="INSERT INTO order(orderNo,cusNo,orderDate,orderSum,orderAddress) VALUES ('$num','$_SESSION[admin]', '$time','$sum','$_POST[orderAddress]')";
if (!mysql_query($sql,$corn))
echo "fail";
else
echo "success";
?>
回复讨论(解决方案)
你把 echo "fail" 改成
echo mysql_error();
就真相大白了!
orderNo 是自增的,也就是主键
而主键是不可重复的
你给他赋予 $num 的值,那就有可能违规了
既然你在插入时开列了字段名,那自增字段就不需要也在其中了
$sql="INSERT INTO order(cusNo,orderDate,orderSum,orderAddress) VALUES ('$_SESSION[admin]', '$time','$sum','$_POST[orderAddress]')";
因为我对auto_increasement不熟悉 我也没把orderNo设为主键 但是 刚刚按照你说的改了一下 报错如下:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order(cusNo,orderDate,orderSum,orderAddress) VALUES ('1', '20140731','94','2')' at line 1
就还是我的插入语法有问题还是什么........
order 加上转义字符试试。
$sql="INSERT INTO `order`(cusNo,orderDate,orderSum,orderAddress) VALUES ('$_SESSION[admin]', '$time','$sum','$_POST[orderAddress]')";
加了转义字符没有用啊
现在还报什么错?同时贴出show create table order; 看看。
错误还是上面那个:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order(cusNo,orderDate,orderSum,orderAddress) VALUES ('2', '20140731','94','111'' at line 1
说是有语法错误
我的数据表是这样的(这是一张订单表 用于购买时生成订单记录的)
orderNo 应该设置为自动编号和主键
$sql="INSERT INTO order(cusNo,orderDate,orderSum,orderAddress) VALUES ('$_SESSION[admin]', '$time','$sum','$_POST[orderAddress]')";
echo $sql;
贴出结果看看
现在你的$sql 是如何写的?贴出来看看。是不是复制我#3 的代码。
结果是:
INSERT INTO order(cusNo,orderDate,orderSum,orderAddress) VALUES ('2', '20140731','94','1111')
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order(cusNo,orderDate,orderSum,orderAddress) VALUES ('2', '20140731','94','1111' at line 1
我的代码:就是和#3一样的
$sql="INSERT INTO order(cusNo,orderDate,orderSum,orderAddress) VALUES ('$_SESSION[admin]', '$time','$sum','$_POST[orderAddress]')";
echo $sql;
echo"";
if (!mysql_query($sql,$corn))
die('Error: ' . mysql_error());
else
echo "success";
?>
orderfNo已经设为主键 并且自增了
`order` 注意前后转义符。
改成这样:
$sql="INSERT INTO 'order' (cusNo,orderDate,orderSum,orderAddress) VALUES ('$_SESSION[admin]', '$time','$sum','$_POST[orderAddress]')";
echo $sql;
没差耶 错误提示变成这样了:
INSERT INTO 'order' (cusNo,orderDate,orderSum,orderAddress) VALUES ('2', '20140731','94','1111')
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''order' (cusNo,orderDate,orderSum,orderAddress) VALUES ('2', '20140731','94','1' at line 1
因为我在做一个简单的购物网站 ,
注册都通了 就是说用户表可以添加信息了,
到购买这里死活加不进去 死磕了好几天了 我觉得大致的原理是一样的 可是都没成功
拜托大家帮帮忙,谢谢啦
让你复制我的代码就那么难吗?
`` 是Tab键上方的字符,不是单引号。
成功了
谢谢楼上的大哥!!!!!!!!!!!!好棒啊 我真以为是单引号。。。。。
上一篇: 求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义
下一篇: linux svn 检出更新时报错svn: Can't convert string from 'UTF-8' to native encoding:
推荐阅读
-
浅谈mysql数据库中的换行符与textarea中的换行符
-
详解在Windows环境下访问linux虚拟机中MySQL数据库
-
mysql数据库转移至sqlserver数据库中详解(mysql和sqlserver数据转移)
-
在MySQL数据库中复位根用户的密码的方法
-
mysql 数据库中my.ini的优化 2G内存针对站多 抗压型的设置
-
向数据库中插入数据并返回当前插入的行数及全局变量@@IDENTITY应用
-
在MySQL中用正则表达式替换数据库中的内容的方法
-
centos中mysql备份数据库脚本分享
-
用shell脚本在mysql表中批量插入数据的方法
-
C#/.Net 中快速批量给SQLite数据库插入测试数据