当前位置:  开发笔记 > 编程语言 > 正文

为什么mysql_real_escape_string()不起作用?

如何解决《为什么mysql_real_escape_string()不起作用?》经验,为你挑选了1个好方法。

我正在尝试使用PHP写入数据库但是如果我尝试使用mysql_real_escape_string()我没有得到任何错误但没有任何东西被保存到数据库中我不知道为什么= /特别是因为我做了同样的事情在另一个PHP文件上,它完美地工作...

Intentó enviar una forma vacía. Por favor intente de nuevo.';
}else{
$fecha = mysql_real_escape_string(stripslashes($_POST['fecha']));
$usuario = mysql_real_escape_string(stripslashes($_POST['usuario']));

connection...

 $sql = "INSERT INTO $tbl_name(usuario, comentario, fecha, estado) VALUES('$usuario','$falla','$fecha', '0')" or die('mysql_error()'); 

现在我不检查"fecha"或"usuario"是否为空,因为它们是通过表单中的隐藏字段发送的.


编辑

我做了切换,仍然没有错误,没有任何进入db = /我正在查看文档,但我很困惑,因为我已经完全按照完全相同的方式完成了这项工作......哈哈......


编辑2

是的,我有一个

mysql_query($sql) or die('Error SQL !'.$sql.'
'.mysql_error());

是的我已将$ tbl_name与连接一起设置:

$host="localhost"; 
$username="user"; 
$password="pass"; 
$db_name="cosa"; 
$tbl_name="reportes"; 

我已经在数据库监视器中完成了检查并打印出来......它返回OK ...但是,你说"清理"$ falla是什么意思?我认识到注射,但我对php本身很新.


编辑3

我只是用die来测试,但是没有错误显示它的功能很顺利,如果我使用"mysql_real_escape_string()"就不会插入一个东西


编辑4

这是我目前的代码:

Intentó enviar una forma vacía. Por favor intente de nuevo.';
}else{

    $host="localhost"; // Host name
    $username="user"; // Mysql username
    $password="pass"; // Mysql password
    $db_name="cosa"; // Database name
    $tbl_name="reportes"; // Table name

    // To protect MySQL injection
    $fecha = mysql_real_escape_string(stripslashes($_POST['fecha']));
    $usuario = mysql_real_escape_string(stripslashes($_POST['usuario']));
    $falla = mysql_real_escape_string(stripslashes($falla));

    $db = mysql_connect($host, $username, $password) or die('Cannot Connect '.mysql_error()); 
     mysql_select_db($db_name) or die('Cannot select DB '.mysql_error());

    $sql = "INSERT INTO $tbl_name(usuario, comentario, fecha, estado) VALUES('$usuario','$falla','$fecha', '0')" or die('mysql_error()');

    mysql_query($sql) or die('Error SQL !'.$sql.'
'.mysql_error()); header("location:../../user/usuario.php"); mysql_close(); } ?>

这是完整的,也根据我在这里得到的建议改变了......仍然没有得到任何东西进入数据库......



1> nickohrn..:

我想你可能需要在使用mysql_real_escape_string之前打开mysql连接.请参阅文档.

编辑

试试这个,但你桌子上的数据类型是什么?所有领域(usuario,comentario,fecha,estado)都是字符串吗?我相信这就是你的插入声明所说的.

Intentó enviar una forma vacía. Por favor intente de nuevo.';
} else {

    $host = "localhost"; // Host name
    $username = "user"; // Mysql username
    $password = "pass"; // Mysql password
    $db_name = "cosa"; // Database name
    $tbl_name = "reportes"; // Table name


    $db = mysql_connect( $host, $username, $password ) or die( 'Cannot connect ' . mysql_errno( ) );
    mysql_select_db( $db_name ) or die( 'Cannot select DB ' . mysql_error( ) );

    $fecha = mysql_real_escape_string( stripslashes( $_POST[ 'fecha' ] ) );
    $usuario = mysql_real_escape_string( stripslashes( $_POST[ 'usuario' ] ) );
    $falla = mysql_real_escape_string( stripslashes( $falla ) );

    $sql = "INSERT INTO $tbl_name(usuario, comentario, fecha, estado) VALUES('$usuario','$falla','$fecha', '0')" or die( 'mysql_error()' );

    mysql_query( $sql ) or die( 'Error SQL !' . $sql . '
' . mysql_error( ) ); // You need a URL here, not a relative path header( "Location:../../user/usuario.php" ); mysql_close( ); } ?>

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有