SQL UPDATE语句不执行任何操作,但不返回任何错误。

时间:2014-03-07 17:28:15

标签: php html sql

<?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,因此它可以工作。

2 个答案:

答案 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");

您应该切换为mysqliPDO,因为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");