为什么我的数据库表在此查询后没有更新?

时间:2011-05-05 12:16:41

标签: php mysql

我通过1和1使用专用服务器,如下所示的PHP代码不会将数据插入数据库。

与数据库的所有连接都是正确的。

$id = $_REQUEST['id'];
$content = $_REQUEST['content'];    
mysql_query("UPDATE `content` SET `content` = '$content' WHERE `id`='$id'");

当我在本地服务器上测试一切正常时,服务器上有一些不允许我上传的内容。我使用非常通用的方法进行连接

    $connection = mysql_connect("localhost",
    "root",
    "password");

mysql_select_db("dbname", $connection);

3 个答案:

答案 0 :(得分:1)

1)将错误报告置于PHP脚本的顶部,打开错误报告:

error_reporting(E_ALL);

2)运行你的脚本。有错误吗?如果是,请根据您收到的错误消息继续。

3)仔细检查您的变量是否已实际定义(您从请求中获取变量,您无法确定请求实际上是否包含您尝试使用的值)。

4)您的SQL查询非常危险。使用mysql_real_escape_string()或预处理语句。不要在整数值周围加上引号。

5)编辑脚本看起来更像这样:

error_reporting(E_ALL);

$id = (isset($_REQUEST['id']) && !empty($_REQUEST['id'])) ? $_REQUEST['id'] : NULL;
$content = (isset($_REQUEST['content']) && !empty($_REQUEST['content'])) ? $_REQUEST['content'] : NULL;    

try{

    if(NULL === $id){
        throw new Exception('$id is NULL');
    }
    if(NULL === $content){
        throw new Exception('$content is NULL');
    }
    $id = mysql_real_escape_string($id);
    $content = mysql_real_escape_string($content);
    $sql = "UPDATE content SET content = '$content' WHERE id = $id";

    // connect to database
    // ...
    mysql_query($sql);

}catch(Exception $e){
    echo '<p style="color: red;">',$e->getMessage(),'</p>';
}

答案 1 :(得分:0)

为初学者提供Ddebugging ...

您是否未发布任何错误,是否已关闭错误报告?启用错误报告后,调试会更容易。

error_reporting(E_ALL);

我们还想看看我们尝试在数据库中运行的实际查询。也许这些变量没有被正确转义(包含非法字符)。

$query = "UPDATE table SET name='$name' where id='$id'";
echo $query;
mysql_query($query);

我的猜测是你必须mysql_real_escape_string();这两个变量。 您还将$id作为string传递,它可能是integer

答案 2 :(得分:0)

你处理不当transactions