douju2331 2012-12-03 11:44
浏览 17
已采纳

PHP Query在数据库中有不同的结果

when I try to insert data to my database using PHP, echoing out the query, it echoes a query that can be inserted(I inserted the data directly using PHPMyadmin no problems). But still it gave me some errors using php, so i deleted the relation on the DB and tried again, and then i saw what was the issue, but i don't understand what is causing it.

The Problem

My code:

echo "<b>mysql_query(\"INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', '$pagamento_id','$total','$obs')\");</b>";

    mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', 'pagamento_id','$total','$obs')") or die(mysql_error());

My echo:

"mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('1','2012-12-03 11:13:08','2013-01-03 11:13:08', '1', '1','2400','Observações')");"

what i get inserted:

+++++++++++++++
+EncomendaCab +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|utilizador_id |   data_encomenda  |  data_vencimento  | envio_id | pagamento_id | total | obs |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|      1       |2012-12-03 11:13:08|2013-01-03 11:13:08|    1     |       1      |  2400 |Observações|
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

So this is for an e commerce site, that is going to receive the orders and get the payment or via Paypal, or postal service or directly in the physical store, the fields you are in Portuguese, so I am translating and explaining them below(some may be straight forward others may not be that easy):

utilizador_id:(int)this is the user id it is the key of the users table.

data_encomenda (order_date)(datetime): this is the date time of the moment when the client(user) submits the form confirming an order.

data_vencimento(datetime): this is equivalent to due date it is a request from "my client"

envio_id(int): this is the kind of shipment that the client of the store can choose(he can ask to send to his house or pick the things in the physical store);

pagamento_id(int): this is the table that stores the king of payments the client can choose(paypal, check, postal service, etc), and is where the problem is, on the echoed query it echoes a 1 or other number of the select element in the form(witch is getting the values from the database), but when is submitting to the database it is replaced with a 0, and caused a "foreign key constraint fails" error. and i don't understand why...

total(float): this stores the total of the order to display in the back-end,

obs(varchar(500)): this is the observations field where people can ask for things(like: "draw a unicorn on the box").

thank you for your time...

EDIT:

i forgot the data types, but already added them...

the error message was a foreign key constraint fails but i deleted the relation on the table pagamento now it inserts a zero this means(AFAIK) that the data inserted is invalid, but if it is echoing an integer why isn't it accepting it, somewhere when the mysql_query() is executed that variable is "corrupted" and i don't understand where or why...

it is given by a $_POST from the form it maybe important...

  • 写回答

1条回答 默认 最新

  • dousong4777 2012-12-03 12:01
    关注
    mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', 'pagamento_id','$total','$obs')") or die(mysql_error());
    

    pagamento_id is the problem because it is not a php variable.

    mysql_query("INSERT INTO EncomendaCab(utilizador_id,data_encomenda,data_vencimento, envio_id, pagamento_id, total,obs) VALUES('$cliente_id','$data_e','$data_v', '$envio_id', '$pagamento_id','$total','$obs')") or die(mysql_error());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c