问题描述:

 
用PHP向MySql数据库中修改数据,实现增删改(数据库能正确连接)
经测试,代码只能对数字进行正常的增删改操作,非数字操作无效
 
但要在课程名称中输入中文,应该如果修改呢?
 
存在问题的代码主要是:
 $sql = mysql_query("insert into kcb values($kch,$kcm,$kkxq,$xs,$xf)"); 
 

 
数据库的数据:
 
代码(代码是正确的)如下:
<?php 
    if (isset($_POST["change"])) {
        //修改
        $kch = $_POST['kch'];   //课程号
        $kcm = $_POST['kcm'];   //课程名
        $kkxq = $_POST['kkxq']; //开课学期
        $xs = $_POST['xs'];     //学时
        $xf = $_POST['xf'];     //学分
        $sql = mysql_query("update kcb set KCM='$kcm',KKXQ=$kkxq,XS=$xs,XF=$xf where KCH=$kch");
        echo "<script>alert('修改信息成功');</script>";
    }
    if (isset($_POST["add"])) {
        //增加
        $kch = $_POST['kch'];   //课程号
        $kcm = $_POST['kcm'];   //课程名
        $kkxq = $_POST['kkxq']; //开课学期
        $xs = $_POST['xs'];     //学时
        $xf = $_POST['xf'];     //学分
        $sql = mysql_query("insert into kcb values($kch,'$kcm',$kkxq,$xs,$xf)");    
        echo "<script>alert('添加信息成功');</script>";
    }
    if (isset($_POST["delete"])) {
        //删除
        $kch = $_POST['kch'];   //课程号
        $sql = mysql_query("delete from kcb where KCH=$kch");
        echo "<script>alert('删除信息成功');</script>";
    }
?>
 

问题解决:
 
(都是猜的)
 
由于只对数字有效,故推测传进数据库的数据类型存在问题。
 
但通过 var_dump($kcm) 得到数据类型是 string 类型。
 
那么要向数据库传入字符串变量怎么做?
 
经测试:
可行办法是,给该行代码中的字符串变量加单引号:
$sql = mysql_query("insert into kcb values($kch,'$kcm',$kkxq,$xs,$xf)"); 
 

但思考到,PHP中双引号才解析变量,所以就有点混乱了,故百度了一下PHP单引号和双引号的区别
 
 
从这个链接中,弄懂了一些问题。总结如下:
 

总结:
 
1、简单概括:双引号中的变量可以解析,单引号就是绝对的字符串。单引号、双引号必须成对使用,
 
2、单引号中的 “\” 反斜杠会被直接输出,双引号中的反斜杠才会被解析为转义字符。
 
PHP复杂的变量用花括号括起来,语法分析器就能正确分析。如:{$a[$i][$j]}
     如果要在字符串本身中引用花括号,要用转义字符。
 
、在插入数据库的SQL语句是采用单引号来定义字符串。
      如果要将一个含有单引号的字符串插入数据库,要用转义字符。
      或者使用 addslashes() 函数,该函数的功能:在指定的预定义字符前添加反斜杠。
      使用该函数可防止SQL注入攻击。
      
这些预定义字符是:  
          单引号(')
          双引号(")
          反斜杠(\)
          NULL
 

 
SQL注入攻击相关链接:
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PHP 向 MySql 中数据修改操作时,只对数字操作有效,非数字操作无效,怎么办?的更多相关文章

  1. MySQL字段数据全部查出【只保留中文、英文、数字、空格的词表】

    select * from xxx_xxx_bak where slot_type_id in ('xxx', 'xxx') ; by @大超超 记录备查

  2. MySQL中order by排序时,数据存在null咋办

    order by排序是最常用的功能,但是排序有时会遇到数据为空null的情况,这样排序就会乱了,这里以MySQL为例,记录我遇到的问题和解决思路. 问题: 网页要实现table的行鼠标拖拽排序,我用A ...

  3. EF中数据修改时动态更新其他数据

    场景 利用.net core开发时,经常会遇到使用EF(Entity Framework),但是今天在开发过程中发现一个值莫名其妙的自己变了,我怀疑是EF的问题. 主要代码如下: 1 // 最近一条告 ...

  4. MySQL中数据表的基本操纵

    本文基于对国家863中部软件孵化器编著的<MySQL从入门到精通>一书的操作实践.  一.创建数据表 数据表属于数据库,在创建数据表之前,应该使用语句 USE 数据库名  指定操作是在那个 ...

  5. python链接mysql以及mysql中对表修改的常用语法

    MySQL是一个关系型数据库管理系统 ,其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库.在使用过程中不总是和它打交道,导致使用时候都得 ...

  6. mysql中,执行delete语句时出现Lock wait timeout exceeded问题

    问题描述: 当我插入一条记录时,在调用save方法的时候出现了异常(记录重复了),导致了后面的commit语句不能执行了.这时我在数据库中删除重复记录时发现该表已经被锁上了.即出现错误.但过了一会再次 ...

  7. MYSQL中的SELECT查询时进行运算

    SELECT在mysql中是查询表中的数据的作用,但也可以在查询的时候直接进行运算,然后返回查询后的结果 比如 )) FROM username2 其中的IFNULL函数是对adven数据进行判断,若 ...

  8. MySQL中in('5,6,7')只取第一个id为5对应的数据的思考

    通过阅读本文你可以更好的理解两个知识点: 1.#{}与${}在实际项目中的使用,避免在项目中使用不当造成不可预知的Bug; 2.MySQL中in里面如果是字符串的话,为什么只取第一个对应的数据,eg: ...

  9. java 读取mysql中数据 并取出

    public static String url = null; public static String username = null; public static String password ...

随机推荐

  1. Android仿腾讯应用宝 应用市场,下载界面, 有了进展button

    近期应用市场做,需要使用.下载与进度显示button,因此,要寻找其他大神做,直接用于改善.和很多无用的切出.在改进共享后. 再一次改变.当下载进度时,有进步.进度显示自己主动运行文本.并设置背景为灰 ...

  2. 文件和目录之symlink和readlink函数

    symlink函数创建一个符号链接. #include <unistd.h> int symlink( const char *actualpath, const char *sympat ...

  3. Linux MySQL-Workbench安装

    yum install pcre-devel libglade2-devel gtkmm24-devel libgnome-devel lua-devel libzip-devel mysql-dev ...

  4. JavaScript网站设计实践(四)编写about.html页面,利用JavaScript和DOM,选择性的显示和隐藏DIV元素

    一.现在我们在网站设计(三)的基础上,来编写about.html页面. 这个页面要用到的知识点是利用JavaScript和DOM实现选择性地显示和隐藏某些DIV about.html页面在前面我们为了 ...

  5. 学习PHP时的一些总结(五)

    mysql中启用事务的数据表类型建议使用InnoDB 利用PHP代码调用mysql中的事务过程: 1>关闭自动提交过程 $mysqli->autocommit(0); 2>执行sql ...

  6. Android 框架修炼-自己封装双缓存管理框架库

    一.概述 Android开发中,网络请求是很重要的一部分,而缓存网络请求来的图片或者响应结果字符串或者结果流,既可以省流量,同时也可以帮助我们 解决无网或弱网情况下加载情况,当然也可以提升程序性能效率 ...

  7. eclipse安装插件的方法,以python为例子

    一 转载自:http://www.cnblogs.com/linzhenjie/articles/2639113.html 1.基本需求 1.Eclipse 集成开发环境下载 http://115.c ...

  8. android 按两次返回键退出应用

    private long mExitTime; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCod ...

  9. HTTP层 —— 中间件

    1.简介 HTTP 中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制.例如,Laravel 内置了一个中间件来验证用户是否经过授权,如果用户没有经过授权,中间件会将用户重定向到登录页面,否则 ...

  10. MySQL之事务处理、存储过程

    事务处理 动作 开始事务:start transaction 提交事务:commit 回滚事务:rollback 设置自动提交:set autocommit 1 | 0 autoCommit系统默认是 ...