2013-07-02 186 views
-4

我在使用php脚本时遇到了一些麻烦。SQL查询总是失败

if(!empty($_POST['iblogtitle'])) 
{ 
    $ptitle = mysqli_real_escape_string($link, $_POST['iblogtitle']); 
    $pcontent = mysqli_real_escape_string($link, $_POST['iblogcontent']); 
    $pblogid = mysqli_real_escape_string($link, $_POST['iblogid']); 
    $query = "UPDATE blog SET PostTitle='" . $ptitle . "', PostContent='" . $pcontent . "', PostDate=NOW() WHERE PostID='" . $pblogid . "'"; 
    $sql = mysqli_query($link, $query); 

    if($sql) 
    { 
     header("LOCATION: blog.php"); 
    } 
    else 
    { 
     $result = "Blog update failed: " . mysqli_error($link) . "/" . $query; 
     echo $result; 
    } 
} 

我的问题是进入这个if语句时,显然$_POST['iblogtitle']必须有一个值。但是,我已检查并重新检查,甚至将$query更改为不包含mysqli_real_escape_string值,并且每次都收到失败的更新。

收到错误:

Blog update failed:/UPDATE blog SET PostTitle='', PostContent='', PostDate=NOW() WHERE PostID=''

没有实际的MySQL错误。我确定error_reporting已关闭,甚至将其设置为仅位于变量声明之上的error_reporting(1)

+0

你能回应'$ query'吗? – silkfire

+0

@silkfire他已经这么做了 – tlenss

+3

''我已经确认error_reporting已关闭“**这就是你做错了。**'error_reporting(E_ALL);'它必须是 –

回答

0

请将脚本全部张贴出来,以便我可以看一看。

有时$ link可能无效,因为你忘记了包含连接的声音,愚蠢的是事实。

+0

我其实只是包括我的“base.php”,其中包括我的连接细节,一切工作正常。我现在唯一的疑问是,我不明白为什么这不起作用。我展示你们的剧本是这样的: 'blog.php的>如果$ _GET [ 'blogid'] = X>包括 “blogedit.php”' blog.php的已经包括base.php 所以为什么没有拖延? – user2195574

+0

可能是因为它的参数有点怪怪的包含在包含或朝向那个方向。 因此,如果我正确一切正在工作? – Tredged

+0

想通了!我包含了header.php,其中包括if语句中的base.php,其中包括上面的脚本。埃尔戈,标题从来没有被称为,也不是基地。 $ link不存在! – user2195574