2013-12-13 59 views
0

我有一个搜索数据库的搜索页面。一旦搜索,它会将结果显示在一个可以编辑条目的页面上。但是,当我尝试编辑条目时,出现“主题编辑失败”。我看不出我做错了什么。 这里是edit.php。PHP搜索和编辑数据库

if (isset($_POST['submit'])) 
{ 
//form was submitted 

$First_Name = mysql_real_escape_string($_POST["First_Name"]); 
$Last_Name = mysql_real_escape_string($_POST["Last_Name"]); 


$message = "Your details have been received"; 

//Database Query 
$query = "UPDATE subjects SET "; 
$query .= "First_Name = '{$First_Name}'"; 
    $query .= "Last_Name = '{$Last_Name}'"; 

$query .= "LIMIT 1"; 

$result = mysqli_query($connect, $query); 
if($result && mysqli_affected_rows($connect) == 1) 
    { 
     //Success 
     echo "Subject Edited. "; 
    } 
else 
    { 
     //failure 
     echo "Subject Editing failed. "; 
    } 
} 

这里是形式:

<form action="edit.php" method ="post"> 

<p>First_Name 
<?php  
$fquery = $_GET['fquery']; 
$lquery = $_GET['lquery']; 
$fquery = htmlspecialchars($fquery); 
$lquery = htmlspecialchars($lquery); 
$fquery = mysql_real_escape_string($fquery); 
$lquery = mysql_real_escape_string($lquery); 
$raw_results = mysql_query("SELECT * FROM member 
WHERE (`First_Name` = '$fquery') AND (`Last_Name` = '$lquery')") or  die(mysql_error()); 

if(mysql_num_rows($raw_results) > 0){ 
    $string = ""; 
    while($results = mysql_fetch_array($raw_results)){     
      $string .= "<p class=\"name\">".$results['First_Name']." "; 
     } 
    } 
else{ 
    $string = "No results"; 
} 
echo $string; ?>    
<input type="text" name="First_Name" value ="" /> 
</p> 

<p>Last Name: 
<?php  
$fquery = $_GET['fquery']; 
$lquery = $_GET['lquery']; 
$fquery = htmlspecialchars($fquery); 
$lquery = htmlspecialchars($lquery); 
$fquery = mysql_real_escape_string($fquery); 
$lquery = mysql_real_escape_string($lquery); 
$raw_results = mysql_query("SELECT * FROM member 
WHERE (`First_Name` = '$fquery') AND (`Last_Name` = '$lquery')") or die(mysql_error()); 

if(mysql_num_rows($raw_results) > 0){ 
    $string = ""; 
    while($results = mysql_fetch_array($raw_results)){     
      $string .= "<p class=\"name\">".$results['Last_Name']." "; 
     } 
    } 
else{ 
    $string = "No results"; 
} 
echo $string; ?>    
<input type="text" name="Last_Name" value ="" /> 
</p> 

一旦表单提交的数据库将更新查询。谢谢你的帮助!!

+0

我没有看到问题。你有没有使用基本的调试方法,如'error_reporting(E_ALL);','mysqli_error()'并在执行前打印查询'print $ query; $ result = ..'? – kero

+0

是的,我有@kingkero它没有给我任何错误,直到我添加他们都寄给我的代码。它不会给我在DreamWeaver中的错误,但提交时会吐出一个错误。警告:mysqli_affected_rows()期望参数1为mysqli,null在第29行中的/home/content/96/11465396/html/edit.php中给出的为null 主题编辑失败。 – King

回答

0

您的查询失败,因为您的语句中没有适当的分隔符。

这里

$query = "UPDATE subjects SET "; 
$query .= "First_Name = '{$First_Name}'"; 
    $query .= ",Last_Name = '{$Last_Name}'"; //<---------- Comma added (before last name) 

$query .= " LIMIT 1";//<----- Space added before LIMIT 
0

见我想你需要查询一个逗号和额外的空间。现在你查询应该是这样的:

UPDATE subjects SET First_Name = '{$First_Name}'Last_Name = '{$Last_Name}'LIMIT 1 

当你需要它看起来像这样:

UPDATE subjects SET First_Name = '{$First_Name}', Last_Name = '{$Last_Name}' LIMIT 1 

您应经常检查您的查询结果和记录错误。在这种情况下,你会被特意告诉你在你的查询中有一个语法错误。

你也可能很好的服务器不使用一堆字符串contatenation来建立你的查询,甚至可能使用参数化准备好的语句。在这种情况下,你可以这样写你的SQL:

$query = <<<EOD 
UPDATE subjects 
SET First_Name = ?, Last_Name = ? 
LIMIT 1 
EOD; 

这在代码中更具可读性。

+0

直到我添加了代码之后,才从未给出过错误。警告:mysqli_query()期望参数1为mysqli,null在第28行的/home/content/96/11465396/html/edit.php中给出的为null 主题编辑失败。不知道从哪里出发,因为我做了你们所说的事情,而且它仍然会产生一个错误。 Hopw我能看到那个错误的含义吗? – King

+0

我现在可以做什么? @Mike Brant – King

+0

@King看起来你并没有真正创建数据库连接并将值赋给'$ connect'。那是错误信息告诉你的。 –