<?php
require ("db/db.php");
$c_id = ($_POST['c_id']);
$c_title = ($_POST['c_title']);
$c_content = ($_POST['c_content']);
// echo place
$sql = mysql_query("UPDATE content
SET c_id = $c_id, c_title = $c_title, c_content = $c_content
WHERE c_id = $c_id");
header("location: index.php");
?>
这是我的代码。 当标题转到索引时,nothig在此处显示的字段中已更改。 我试图在“回声位置”回显变量,它们都返回正确, 所以我知道他们被张贴到页面。 我猜错误是在SQL UPDATE语句中,但PHP不会向我返回任何错误, 它直接转到index.php。 当我尝试在phpmyadmin中运行SQL时,值为1而不是变量,它将所有字段更改为1,因此它可以工作。
答案 0 :(得分:2)
1)您应该使用mysql_real_escape_string()
2)为什么你要更新表的id?您还需要更改您的查询 3)在你的php变量中使用引号
试试这样:
require ("db/db.php");
$c_id = mysql_real_escape_string($_POST['c_id']);
$c_title = mysql_real_escape_string($_POST['c_title']);
$c_content = mysql_real_escape_string($_POST['c_content']);
// echo place
$sql = mysql_query("UPDATE content
SET c_title = '$c_title', c_content = '$c_content'
WHERE c_id = $c_id limit 1") or die(mysql_error());
header("location: index.php");
您应该切换为mysqli
或PDO
,因为mysql_*
已过时且将被删除。
答案 1 :(得分:0)
只是为了确定,试试这段代码(由于我不知道变量内容,我把所有这些都放在了''“
$sql = <<<SQL
UPDATE content
SET c_id='{$c_id}', c_title='{$c_title'}, c_content='{$c_content}'
WHERE c_id='{$c_id}'
SQL;
$query = mysql_query($sql);
var_dump($query);
如果$query
返回true,请再次放置header('Location: index.php");