• RFID射频卡超市购物结算系统问题记录--写入卡片时,后台php无法操作数据库


    后台管理人员要给每件商品贴上RF卡作为唯一标识,所以要先给对应的RFID卡中写入响应的信息,我这里为了便于模拟演示只写入商品编号,价格,名称这几个字段,然后要把已经写入的商品上传后台,由后台写入数据库中的商品表(Goods)中,其中VB访问后台的代码如下:

                '把写入卡片的内容上传服务器,由服务器保存在数据库中,后期需要修改url等内容
                Dim sssa As New WinHttpRequest
                Dim urlString As String = "http://mzwapitest.applinzi.com/" + "?" + "name=" + "'" + GoodsName + "'"
                Console.WriteLine(urlString)
                sssa.Open("GET", urlString, False)
    
                sssa.Send()
    
                ' 如果返回为字符串“OK”, 则显示写卡成功标识
                If sssa.ResponseText.Length Then
                    Label6.Text = "商品编码编码:" + GoodsNumb + ";商品名称:" + GoodsName + ";商品价格:" + GoodsPric + "   写入成功" + sssa.ResponseText
                Else
                    ISO15693_WriteMultipleBlocks(hr, ht, 0, 112, eraseData, eraseData.Count - 1)
                End If

    php后台如下:

    <?php
    
    header("Content-type:text/html;charset = utf-8");
    
    $name = $_GET['name'];
    //$numb = $_GET['numb'];
    //$price = $_GET['price'];
    //if ($name=="aaa") {
        //echo 'mazhongwei';
    //}
    
    
    
    // 连主库
    $db = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
    //$db = mysql_connect(w.rdc.sae.sina.com.cn.':'.3307,ilzy5im2l1w4im2hl13miwmy3ky3l10h1y3l4wkh);
    
    // 连从库
    // $db = mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
    
    if ($db) {
         mysql_select_db(app_mzwapitest, $db);
        $ok = mysql_query('insert into Goods(name) values($name)');
       if($ok){
           echo 'OK';
       }else{
          
           echo 'insert error';
       }
        
        // ...
    }else {
        echo 'openerror';
    }
    
    
    
    
    ?>

    但是在操作过程中总是不能正确连接,后在php操作数据库的语句后天添加一条语句,用来接收sql操作失败的提示:

    <?php
    
    header("Content-type:text/html;charset = utf-8");
    
    $name = $_GET['name'];
    //$numb = $_GET['numb'];
    //$price = $_GET['price'];
    //if ($name=="aaa") {
        //echo 'mazhongwei';
    //}
    
    
    
    // 连主库
    $db = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
    //$db = mysql_connect(w.rdc.sae.sina.com.cn.':'.3307,ilzy5im2l1w4im2hl13miwmy3ky3l10h1y3l4wkh);
    
    // 连从库
    // $db = mysql_connect(SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
    
    if ($db) {
         mysql_select_db(app_mzwapitest, $db);
        $ok = mysql_query('insert into Goods(name) values("$name")');
       if($ok){
           echo 'OK';
       }else{
          echo mysql_error();
           echo 'insert error';
       }
        
        // ...
    }else {
        echo 'openerror';
    }
    
    
    
    
    ?>

    然后看到返回的错误信息为:

    Unknown column '$name' in 'field list'insert error

    在网上查发现原因是:

    于是在php语句操作mysql的语句进行如下修改

    修改前:$ok = mysql_query('insert into Goods(name) values($name)');
    修改后:$ok = mysql_query('insert into Goods(name) values("$name")');

    但是运行时虽然现实写入成功,但是打开数据库发现写入的内容是

    "$name"
    然后尝试修改为如下:
    
    
    再次修改:$ok = mysql_query('insert into Goods(name) values('$name')');
    在php中,使用.来拼接字符串,类似于java和vb中的+用法

    这样反而不能执行了。

    由此发现在php中,‘变量’会被识别为一个字符串,所以要用拼接字符串的形式来实现变量插入:

    最后修改:$ok = mysql_query('insert into Goods(name) values('.$name.')');
  • 相关阅读:
    Vue 组件封装发布到npm 报错 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
    SpringBoot thymeleaf模板版本,thymeleaf模板更换版本
    SpringBoot application.properties (application.yml)优先级从高到低
    SpringBoot Cmd运行Jar文件指定active文件的命令如下
    Linux各文件夹的作用
    spring + Mybatis + pageHelper + druid 整合源码分享
    MyEclipse weblogic Deploy Location项目名称不正确解决方案
    Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x
    An internal error occurred during: "Launching xxx on WebLogic10.x".
    Spring集成Mybatis,spring4.x整合Mybatis3.x
  • 原文地址:https://www.cnblogs.com/jiwangbujiu/p/5587490.html
Copyright © 2020-2023  润新知