为什么mysql_real_escape_string()不起作用?

Tsu*_*oku 0 php sql

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

<?php
if(isset($_POST['reporte']))
    $falla = $_POST['reporte'];
else      
    $falla = "";

if(!isset($falla)){
    echo '<font color="red">Intentó enviar una forma vacía. Por favor intente de nuevo.</font>';
}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()'); 
Run Code Online (Sandbox Code Playgroud)

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


编辑

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


编辑2

是的,我有一个

mysql_query($sql) or die('Error SQL !'.$sql.'<br>'.mysql_error()); 
Run Code Online (Sandbox Code Playgroud)

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

$host="localhost"; 
$username="user"; 
$password="pass"; 
$db_name="cosa"; 
$tbl_name="reportes"; 
Run Code Online (Sandbox Code Playgroud)

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


编辑3

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


编辑4

这是我目前的代码:

<?php
if(isset($_POST['reporte']))
    $falla = $_POST['reporte'];
else      
    $falla = "";

if(!isset($falla)){
    echo '<font color="red">Intentó enviar una forma vacía. Por favor intente de nuevo.</font>';
}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.'<br>'.mysql_error());

    header("location:../../user/usuario.php"); 
    mysql_close();    
}  
?>
Run Code Online (Sandbox Code Playgroud)

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

nic*_*hrn 15

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

编辑

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

<?php
if( isset( $_POST[ 'reporte' ] ) ) {
    $falla = $_POST[ 'reporte' ];
} else {
    $falla = "";
}

if( !isset( $falla ) ) {
    echo '<font color="red">Intentó enviar una forma vacía. Por favor intente de nuevo.</font>';
} 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 . '<br>' . mysql_error( ) );

    // You need a URL here, not a relative path
    header( "Location:../../user/usuario.php" );
    mysql_close( );
}
?>
Run Code Online (Sandbox Code Playgroud)