2014-11-03 58 views
-3

我有一个非常简单的表单,它不工作。我试图完成的是当用户点击更新按钮时,他们会看到填充了信息的表单。当他们更改信息并点击更新时,他们会被发送回主窗体并显示所有更改。一切正常,但更新。当你改变某些东西并点击更新时,没有什么改变。这里是更新表单代码:用简单的php和mysql更新数据库

<h4>Update Record</h4> 
<?PHP 
$con=mysqli_connect("localhost", "root", "", "customers"); 

//check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysql_connect_error(); 
} 
?> 
<form action="update_process.php" method="get"> 
    Band: <input type="text" name="artist" value="<?php echo $_GET['artist'] ?>"/><br/> 
    Album: <input type="text" name="title" value="<?php echo $_GET['title'] ?>" /><br/> 
    Format: <select name="format"> 
     <option value="Compact Disc" name="compact disc">compact disc</option> 
     <option value="Album" name="album">album</option> 
     <option value="Cassette" name="cassette">cassette</option> 
     <option value="MP3" name="mp3">mp3</option> 
     </select><br/> 
    Notes: <TEXTAREA NAME="notes" ROWS="3" COLS="30"><?php echo $_GET['notes'] ?> 
     </TEXTAREA><br/> 
    <input type="submit" value="Update" /> 
    </form> 

这里是为update_process.php文件的代码:WHERE子句,你说其中id = '$ ID'

<?php 
$artist = $_GET['artist']; 
$title = $_GET['title']; 
$format = $_GET['format']; 
$notes = $_GET['notes']; 

//create connection to DB 
$con=mysqli_connect("localhost", "root", "", "customers"); 

    //check connection 
    if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $sql = "UPDATE music SET title='$title', artist='$artist', format='$format', notes='$notes' 
    WHERE id='$id'"; 

    if ($con->query($sql) === TRUE) { 
    header('Location:index.php'); 
    } else { 
     echo "Error: " . $sql . "<br>" . $con->error; 
    } 
    ?> 
+0

日志中的任何错误? – 2014-11-03 17:19:59

+1

'mysql_' <=混合。 – 2014-11-03 17:20:18

+1

好眼@ Fred-ii-! – 2014-11-03 17:21:18

回答

1

在,但如果是$ id值设置? 我认为$ id没有值。

+1

他有一点。这是问题的一部分@JayBlanchard,但没有完整的答案。 – 2014-11-03 17:29:06

+0

问题太多,时间太少。而OP没有回应。 : -/ – 2014-11-03 17:30:53

+0

@JayBlanchard正是我选择远离这一点的更多原因。评论通常会成为问题的核心。 – 2014-11-03 17:31:50

0

我看到一些问题与您的代码:

1 - 这里定义的ID $id

2 - 我猜id是一个整数字段,所以不需要的$id;

+0

这只是问题的一部分。 – 2014-11-03 17:29:35

0

您已经混合了基于对象和基于函数的编程。你从基于函数开始,所以我会以这种方式向你展示。要查询的数据库,你需要运行:

mysqli_query($con,$sql); 

不是:

$con->query($sql) 

有你的代码的一些其他问题的安全明智的,但如果你不跳我的回答其余不在乎。

您在使用它们之前没有检查这些GET参数是否存在。使用:

if(isset($_GET['artist'],$_GET['track'],...)) {...} 

你也没有逃避你的查询字符串,使你的网站容易受到SQL注入。使用方法:

$artist = mysqli_real_escape_string($con,$_GET['artist']); 

祝你好运!只要阅读PHP文档,确保您对整个脚本采用对象或函数方法。

+0

请回答OP的问题下的意见。我选择不回答。 OP代码错误太多,不清楚。 – 2014-11-03 17:33:52

+0

非常感谢您的帮助。是的,我是新的,所以不理解专家的骚扰,但是谢谢 – tabmanmatt 2014-11-03 17:57:48