我通过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);
答案 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。