Home  >  Article  >  Backend Development  >  为什么执行插入sql语句,echo就失效了

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

WBOY
WBOYOriginal
2016-06-23 13:38:191278browse

我执行插入语句的方法是

       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()); 这句


谢谢,解决了!
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn