• 技术文章 >后端开发 >php教程

    为什么执行插入sql语句,echo就失效了

    2016-06-23 13:38:19原创704
    我执行插入语句的方法是
           function execute_data($sql){		$result = @mysql_query($sql) or die(mysql_error());		@mysql_free_result($result) or die(mysql_error());		return $result;	}


     $sql = "insert into test(name) values('$name')"; if(execute_data($sql)) {     echo 'ok';}


    这样的,我这样插入语句是已经执行了, 已经插入到数据库的表中,但是echo却没有输出到网页上。。是什么原因?
    用其他方法执行查询语句的话 echo可以输出到网页上。

    执行查询语句的方法
    	function get_js_array($sql){		$result = @mysql_query($sql) or die(mysql_error());		$arr = array();		while($row = @mysql_fetch_array($result, MYSQL_ASSOC)){			$arr[] = $row;  		}		$js = json_encode($arr);		mysql_free_result($result);		return $js;	}


    回复讨论(解决方案)

    函数execute_data的返回值$result被函数mysql_free_result释放掉了返回出去就是null了吧

    把$result打印出来看看是不是为假

    把$result打印出来看看是不是为假



    不为假吧。 我都成功插入了。 只是echo输出不出来。

    mysql_free_result

    你都释放掉了还有返回?

    mysql_query($sql) 对于 insert 指令只返回逻辑值
    因此 mysql_free_result($result) 会报错:$result 不是有效的资源
    但是你屏蔽了 php 错误信息,而 die(mysql_error()) 只是终止程序,因为 sql 指令并没有错(mysql_error() 返回空串)

    mysql_query($sql) 对于 insert 指令只返回逻辑值
    因此 mysql_free_result($result) 会报错:$result 不是有效的资源
    但是你屏蔽了 php 错误信息,而 die(mysql_error()) 只是终止程序,因为 sql 指令并没有错(mysql_error() 返回空串)



    那我有什么办法可以让他输出出来吗?

    注释掉 @mysql_free_result($result) or die(mysql_error()); 这句

    注释掉 @mysql_free_result($result) or die(mysql_error()); 这句


    谢谢,解决了!
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:了解中国银行的网上支付功能的麻烦解答下 下一篇:$.ajax 请求php后台 自动加上反斜杠 转义字符
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP写入XML文件事字表数据只读一条数据,什么原因 • ThinkPHP兑现在线生成准考证 • 【PHP】界别include(),require(),include_once(),require_once() • 请问版主xuzuning • js 弹窗出现乱码了解决方案
    1/1

    PHP中文网