当我尝试更新数据时,我得到了相同的数据但没有更新。我找不到哪里出错了。更新没有显示任何错误,但在查看代码时没有更新。所以更新不起作用。当我尝试更新数据时,我得到了相同的数据但没有更新。我找不到哪里出错了。更新没有显示任何错误,但在查看代码时没有更新。因此更新无效。
// Start the session
session_start();
$dbc = mysqli_connect('localhost', 'root', '', 'onlinetest');
$sumid = $_SESSION['sumid'];
if (!isset($_POST['submit']))
{
$_SESSION['sumid'] = $_GET['sumid'];
$query = "SELECT question, answer FROM sum WHERE sumkey = '$sumid' ";
$data = mysqli_query($dbc, $query);
if (mysqli_num_rows($data) == 1) {
$row = mysqli_fetch_array($data);
$question = $row['question'];
$answer = $row['answer'];
echo $question . $sumid;
}
mysqli_close($dbc);
}
if (isset($_POST['submit']))
{
//$Test = $_SESSION['testid'];
$question1 = $_POST['question'];
$answer1 = $_POST['answer'];
$dbc = mysqli_connect('localhost', 'root', '', 'onlinetest');
// $dbc = mysqli_connect('localhost', 'root', '', 'onlinetest');
$query = "UPDATE sum SET question = $question1,answer = $answer1 WHERE sumkey = $sumid";
mysqli_query($dbc, $query);
echo 'New test name added';
echo ''.$question1;
mysqli_close($dbc);
//exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div>Add sum</div>
<form method="post" action ="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<label for="textarea"></label>
<label>Question</label></p>
<p>
<textarea name="question" id="question" value="" cols="100" rows="9"><?php echo $question ?></textarea>
</p>
<p><label>Answer</label> </p>
<p>
<label for="textarea2"></label>
<textarea name="answer" cols="100" rows="20" id="answer" value=""><?php echo $answer ?></textarea>
</p>
<p>
<input type ="submit" value="ADD" name="submit"/>
</p>
</form>
</body>
</html>
答案 0 :(得分:0)
更新[sic]没有显示任何错误
不足为奇 - 您的代码不会检查错误。尝试在每次mysqli_操作后检查mysqli_error()。
顺便说一句,你的代码很容易受到SQL注入攻击,并且在会话中存储与事务相关的数据是非常糟糕的。
答案 1 :(得分:0)
根据您给定的脚本,首先您获取记录然后更新数据,这可能是因为它没有显示您更新的记录。只需反转条件就意味着如果条件高于提取查询,则将更新置于更新状然后首先它将更新记录,然后获取更新的记录。
脚本易受SQL注入攻击,以防止使用 mysqli_real_escape_string()方法。
// Start the session
session_start();
$sumid = $_SESSION['sumid'];
if (isset($_POST['submit']))
{
//$Test = $_SESSION['testid'];
$question1 = $_POST['question'];
$answer1 = $_POST['answer'];
$dbc = mysqli_connect('localhost', 'root', '', 'onlinetest');
// $dbc = mysqli_connect('localhost', 'root', '', 'onlinetest');
$query = "UPDATE `sum` SET `question` = '$question1', `answer` = '$answer1' WHERE `sumkey` ='$sumid'";
mysqli_query($dbc, $query);
echo 'New test name added';
echo ''.$question1;
mysqli_close($dbc);
//exit();
}
$dbc = mysqli_connect('localhost', 'root', '', 'onlinetest');
if (!isset($_POST['submit']))
{
$_SESSION['sumid'] = $_GET['sumid'];
$query = "SELECT `question`, `answer` FROM `sum` WHERE `sumkey` = '$sumid' ";
$data = mysqli_query($dbc, $query);
if (mysqli_num_rows($data) == 1) {
$row = mysqli_fetch_array($data);
$question = $row['question'];
$answer = $row['answer'];
echo $question . $sumid;
}
mysqli_close($dbc);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<div>Add sum</div>
<form method="post" action ="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<label for="textarea"></label>
<label>Question</label></p>
<p>
<textarea name="question" id="question" value="" cols="100" rows="9"><?php echo $question ?></textarea>
</p>
<p><label>Answer</label> </p>
<p>
<label for="textarea2"></label>
<textarea name="answer" cols="100" rows="20" id="answer" value=""><?php echo $answer ?></textarea>
</p>
<p>
<input type ="submit" value="ADD" name="submit"/>
</p>
</form>
</body>
</html>
答案 2 :(得分:0)
1-从我所看到的,你在代码中混淆了这两件事。
http://us1.php.net/mysqli_close
http://php.net/manual/en/mysqli-result.free.php
http://us1.php.net/mysqli_query
2-正如simcbean告诉你的那样,你需要签出SQL INJECTION(Capitals,所以你知道它是非常重要的。)
在Little Bobby TABLES决定尝试使用您的网站之前快点。
3-个人推荐:
学习PDO准备好的声明,一旦你习惯它就会很容易使用,而且更安全。 http://php.net/manual/en/pdo.prepared-statements.php
有用的代码:
if ($result = mysqli_query($link, $query)) {
// Stuff
}else{
// See what's wrong with the query
}
编辑:如果您的数据不是整数,则需要在UPDATE语句中引用您的值
$query = "UPDATE sum SET question = $question1,answer = $answer1 WHERE sumkey = $sumid";
$query = "UPDATE sum SET question = '$question1',answer = '$answer1' WHERE sumkey = '$sumid'";