0

我测试了更新语句中的变量并检查了是否建立了数据库连接,但是查询没有运行,你能告诉我代码中的错误吗?

for($i=0; $i <= $numcourses; $i++){
    echo '<div class="new'.$i.'" id="new'.$i.'"><label>'.$course_names[$i].'</label>
    <input name="edit'.$i.'" type="submit" value="Edit" /><input name="delete'.$i.'" type="submit" value="Delete" /><br /></div>';
    $name="edit".$i;    
    if (isset($_POST[$name])){
        echo '<input name="text" type="text" value="'.$course_names[$i].'" /><input name="save'.$i.'" type="submit" value="Save"/>';
    }   
    $name2="save".$i;
    if (isset($_POST[$name2])){
        include "includes/open.php";
            $newname=($_POST['text']);
            $int=$i+1;
            $query = "UPDATE course SET cname = '".$newname."' WHERE cid = '".$int."'";
            mysql_query($query) or die(mysql_error());
            include "includes/close.php";
    }
}

更新:Thanx Marc B,添加or die(mysql_error());显示我的代码中的错误,一切正常,我回到了正轨。

4

5 回答 5

3

您的查询调用没有错误处理:

mysql_query($query) or die(mysql_error());
                   ^^^^^^^^^^^^^^^^^^^^^^

这会告诉您查询执行是否有任何问题。在元级别上,您对SQL 注入攻击持开放态度,因此您最好先阅读相关内容并解决问题,然后再进一步处理您的代码。

于 2012-05-03T14:42:15.793 回答
2
$query = "UPDATE course SET cname = '".$newname."' WHERE cid = '".$int."'";

cID 是整数吗?在更新语句中,在我看来像一个字符串,尝试回显每个查询并通过直接在您的数据库中执行它来检查有效性

于 2012-05-03T14:47:23.533 回答
1

你在哪里连接到数据库?

用于连接到数据库,然后在使用..mysql_connect(string hostname, string username, string password');选择数据库后执行查询mysql_select_db

于 2012-05-03T14:46:57.287 回答
1

首先你应该删除额外;$name="edit".$i;;

那么,你如何发布这些值?我<form>在您的代码中看不到任何属性,因此无法发布。

此外,一切都在 for 循环中。$newname=($_POST['text']);永远不会被设置。

于 2012-05-03T14:49:35.037 回答
1

也许不是这个:

if (isset($_POST[$name2]))

试试这个:

if ($name2!="")
于 2012-05-03T14:51:26.160 回答