【发布时间】:2010-10-06 23:49:12
【问题描述】:
我正在尝试使用 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()');
现在我不检查“fecha”或“usuario”是否为空,因为它们是通过表单中的隐藏字段发送的。
编辑
我做了切换,仍然没有错误,也没有任何东西进入 db =/ 我正在查看文档,但我很困惑,因为我之前以完全相同的方式完成了此操作,并且它有效...哈哈...
编辑 2
是的,我有一个
mysql_query($sql) or die('Error SQL !'.$sql.'<br>'.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
这是我当前的代码:
<?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();
}
?>
这是完整的,并且根据我在这里得到的建议进行了更改...仍然没有将任何内容放入数据库...
【问题讨论】:
-
您能否编辑您的原始代码示例以准确显示您现在拥有的内容?
-
“清理”我的意思是“数据库专用的转义字符”——就像你在 $fecha = mysql_real_escape_string(stripslashes($_POST['fecha']));