更新数据库失败。找不到错误(FOUND ERROR)

时间:2014-02-05 11:38:51

标签: php html mysql

我想使用此代码更新数据库,但每次都失败,我无法找到表单失败的原因。如果有人可以提供帮助,我会很感激!!

这些是我用来更新数据库的代码(总共有三个文件)

当你进入我的编辑器时,你会看到这个屏幕。(一切正常,更新)它说无法更新数据。它没有显示任何其他错误。 我错过了什么吗?

<html>
<body>
<?php
session_start(); // Start the session
$loggedin = $_SESSION['loggedin']; // Are they loggedin?

// They are not logged in, Kill the page and ask them to login.
if ($loggedin != "1") {
die('Sorry your not loggedin, please login to gain acces. <a href="datlogin.php"> Here </a> to login');}

?>

<?php
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
?>
<head>
<style>
div
{
fload:center;
width:1000px;
margin:0 0 15px 20px;
padding:15px;
border:1px solid black;
}
</style>
<div align="center">
</head>
<img src="http://www.emiclaer.nl/Portals/39/Tuinen.jpg" alt="DTlogo.img" width="880" height="280">
</div>
<body style="margin:15px;">
<div>
Druk op <font color="blue"><u>Update</u></font> om de App te Updaten.<br>
<p></p>
<center>


<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>
<table width="400" border="1" cellspacing="0" cellpadding="3">
<tr>
<td colspan="4"><strong>Iphone aanbiedingen.</strong> </td>
</tr>

<tr>
<td align="center"><strong>Naam</strong></td>
<td align="center"><strong>Omschrijving</strong></td>
<td align="center"><strong>Prijs</strong></td>
<td align="center"><strong>Promotext</strong></td>
<td align="center"><strong>URL</strong></td>
<td align="center"><strong>Image URL</strong></td>
<td align="center"><strong>Update</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
?>

<tr>
<td><? echo $rows['naam']; ?></td>
<td><? echo $rows['omschrijving']; ?></td>
<td><? echo $rows['promotext']; ?></td>
<td><? echo $rows['prijs']; ?></td>
<td><? echo $rows['url']; ?></td>   
<td><? echo $rows['iurl']; ?></td>
<td align="center"><a href="updateformthingy.php?id=<? echo $rows['id']; ?>">Update</a></td>
</tr>

<?php
}
?>

</table>
</td>
</tr>
</table>

<?php
mysql_close();
?>
</div>
</center>
</form>
</body>
</html>

这是你要去的第二个屏幕

<html>
<?php
session_start(); // Start the session
$loggedin = $_SESSION['loggedin']; // Are they loggedin?

// They are not logged in, Kill the page and ask them to login.
if ($loggedin != "1") {
die('Sorry your not loggedin, please login to gain acces. <a href="datlogin.php"> Here </a> to login');}

?>
<?php
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// get value of id that sent from address bar
$id=$_GET['id'];

// Retrieve data from database
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);

$rows=mysql_fetch_array($result);
?>
<head>
<style>
div
{
fload:center;
width:1000px;
margin:0 0 15px 20px;
padding:15px;
border:1px solid black;
}
</style>
<div align="center">
</head>
<img src="http://www.emiclaer.nl/Portals/39/Tuinen.jpg" alt="DTlogo.img" width="880" height="280">
</div>
<body style="margin:15px;">
<div>
Vul hier de updates in.<br>
<p></p>
<center>


<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td colspan="3"><strong>Update Iphone App</strong> </td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center"><strong>Naam</strong></td>
<td align="center"><strong>Omschrijving</strong></td>
<td align="center"><strong>Prijs</strong></td>
<td align="center"><strong>Promotext</strong></td>
<td align="center"><strong>URL</strong></td>
<td align="center"><strong>Image URL</strong></td>
<td align="center"><strong>Update</strong></td>
</tr>
<form name="form1" method="post" action="updateform.php">
<tr>
<td>&nbsp;</td>
<td align="center">
<input name="inp_naam" type="text" id="inp_naam" value="<? echo $rows['naam']; ?>">
</td>
<td align="center">
<input name="inp_omschrijving" type="text" id="inp_omschrijving" value="<? echo $rows['omschrijving']; ?>" size="15">
</td>
<td>
<input name="inp_prijs" type="text" id="inp_prijs" value="<? echo $rows['prijs']; ?>" size="15">
</td>
<td align="center">
<input name="inp_promotext" type="text" id="inp_promotext" value="<? echo $rows['promotext']; ?>">
</td>
<td align="center">
<input name="inp_url" type="text" id="inp_url" value="<? echo $rows['url']; ?>" size="15">
</td>
<td>
<input name="inp_iurl" type="text" id="inp_iurl" value="<? echo $rows['iurl']; ?>" size="15">
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>">
</td>
<td align="center">
<input type="submit" name="Submit" value="Submit">
</form>
</td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</center>
<?php
// close connection
mysql_close();
?>
</body>
</html>

此代码是更新数据库的必要条件。 (我已将此更新到页面上的大多数评论,mysqli和PDO对我不起作用。)

<html>
<body>
<?php
session_start(); // Start the session
$loggedin = $_SESSION['loggedin']; // Are they loggedin?

// They are not logged in, Kill the page and ask them to login.
if ($loggedin != "1") {
die('Sorry your not loggedin, please login to gain acces. <a href="testlogin.php"> Here </a> to login');}

?>
<?php
$inp_naam=$_POST['inp_naam'];
$inp_prijs=$_POST['inp_prijs'];
$inp_promotext=$_POST['inp_promotext'];
$inp_url=$_POST['inp_url'];
$inp_iurl=$_POST['inp_iurl'];
$id=$_POST['id'];

$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name


// Connect to server and select database. 
$conn = mysql_connect("$host", "$username", "$password")or die("cannot connect Host");
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database
$sql="UPDATE `$db_name`.`$tbl_name` 
      SET `naam` = '$inp_naam', 
          `omschrijving` = '$inp_omschrijving', 
          `prijs` = '$inp_prijs', 
          `promotext` = '$inp_promotext',  
          `url` = '$inp_url', 
          `iurl` = '$inp_iurl' 
       WHERE `$tbl_name`.`id` = '$id'";

$result = mysql_query($conn, $sql);

if (!$result) {
// if successfully updated.
echo "Successful";
echo "<BR>";
echo "<a href='list_records.php'>View result</a>";
} else {
die('cannot update DataBase'. mysql_error());
}

?>

</body>
</html>

<html>
<body>
<?php
session_start(); // Start the session
$loggedin = $_SESSION['loggedin']; // Are they loggedin?

// They are not logged in, Kill the page and ask them to login.
if ($loggedin != "1") {
die('Sorry your not loggedin, please login to gain acces. <a href="testlogin.php"> Here </a> to login');}

?>
<?php
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name

session_start();

// Connect to server and select database. 
$conn = mysql_connect("$host", "$username", "$password")or die("cannot connect Host");
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database
$sql="UPDATE tblProducts
SET naam = '".$_POST['inp_naam']."', 
omschrijving = '".$_POST['inp_omschrijving']."', 
prijs = '".$_POST['inp_prijs']."', 
promotext = '".$_POST['inp_promotext']."',  
url = '".$_POST['inp_url']."', 
iurl = '".$_POST['inp_iurl']."'
WHERE id = '".$_POST['inp_id']."'";

$result = mysql_query($sql,$conn);

if (!result) {
// if successfully updated.
echo "Successful";
echo "<BR>";
echo "<a href='list_records.php'>View result</a>";
} else {
die('cannot update DataBase'. mysql_error());
}
mysql_close();

?>
</body>
</html>

非常感谢你的时间!

mysqli的。

// Connect to database
$con=mysqli_connect("$host","$user","$pass","$db_name");

// Check connection
if (mysqli_connect_errno($con))
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
// Get id from URL bar
  $id=$_GET['id']

// connect to table
$sql="SELECT * FROM `tblProducts` WHERE `id` = '$id'";
$result=mysqli_query($con,$sql);
// get table information
$rows=mysqli_fetch_array($result,MYSQLI_ASSOC);

mysqli_free_result($result);
?>

4 个答案:

答案 0 :(得分:1)

首先,查询的语法不正确。 SQL查询应作为第一个参数传递,连接标识符为第二个参数,例如:

$result = mysql_query($sql, $conn);

其次,您的UPDATE查询包含无效字符。您应该使用反引号来转义MySQL中的字段名称,而不是引号。更新您的代码如下:

$sql="UPDATE `$db_name`.`$tbl_name` 
      SET `naam` = '$inp_naam', 
          `omschrijving` = '$inp_omschrijving', 
          `prijs` = '$inp_prijs', 
          `promotext` = '$inp_promotext',  
          `url` = '$inp_url', 
          `iurl` = '$inp_iurl' 
       WHERE `$tbl_name`.`id` = $id";

你会看到我也删除了错误的方括号([])。

请注意,mysql_*函数现已弃用。您应该查看MySQLiPDO。另请注意,您的代码可以SQL injection开放。您应该了解清理输入的信息,特别是Prepared Statements

答案 1 :(得分:0)

我不确定'是否是与表名和列名一起使用的正确符号。

UPDATE '$db_name'.'$tbl_name' 
SET 'naam' = ['$inp_naam'], 'omschrijving' = ['$inp_omschrijving'], 'prijs' = ['$inp_prijs'], 'promotext' = ['$inp_promotext'], 'url' = ['$inp_url'], 'iurl' = ['$inp_iurl'] 
WHERE '$tbl_name'.'id' = $id

也许您想使用`

答案 2 :(得分:0)

$sql="UPDATE '$db_name'.'$tbl_name' 
SET naam = ['$inp_naam'], omschrijving = ['$inp_omschrijving'], prijs = ['$inp_prijs'], promotext = ['$inp_promotext'], url = ['$inp_url'], iurl = ['$inp_iurl'] 
WHERE '$tbl_name'.id = $id";

从列名

中删除单引号

答案 3 :(得分:0)

您的此代码存在一些严重的安全问题。您正在编写POST / GET变量而不引用SQL查询,这允许用户将SQL注入您的查询(请参阅http://xkcd.com/327/:))。

对于数据库交互,我通常使用PDO(http://www.php.net/manual/de/pdo.prepare.php)。

您的代码如下所示:

 $sth = $dbh->prepare('UPDATE '.$db_name.'.'.$tbl_name.' SET naam = ?, omschrijving = ?,  prijs = ?, promotext = ?, url = ?, iurl = ? WHERE '.$tbl_name.'.id = ?');
 $sth->execute(array($inp_naam, $inp_omschrijving, $inp_prijs, $inp_promotext, $inp_url, $inp_iurl, $id));

编辑:如果没有PDO,这将是这样的:

 $sql = "UPDATE ".$db_name.".".$tbl_name." SET"
    ." naam = '".mysql_real_escape_string($inp_naam)
    ."', omschrijving = '".mysql_real_escape_string($inp_omschrijving)
    ."',  prijs = '".mysql_real_escape_string($inp_prijs)
    ."', promotext = '".mysql_real_escape_string($inp_promotext)
    ."', url = '".mysql_real_escape_string($inp_url)
    ."', iurl = '".mysql_real_escape_string($inp_iurl)
    ."' WHERE ".$tbl_name.".id = '".mysql_real_escape_string($id)."'");