php有时只更新数据库数据

时间:2013-11-27 11:26:49

标签: php jquery ajax mysqli

我必须遵循表格

$connection = mysqli_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD, SQL_DBNAME) ;
if (mysqli_connect_errno($connection))
{
echo "Nespojeno s MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM novinky";
$result = mysqli_query($connection, $sql);
echo "<div id='newsbox'>";
while($zaznam = mysqli_fetch_row($result)): 
echo "<form class='newsholder'>";   
echo "<input id='displaynadpis' value='$zaznam[1]'>";   
echo "<input id='displaybold' value='$zaznam[2]'>"; 
echo "<textarea id='displaytext'>$zaznam[3]</textarea>";    
echo "<div class='buttonsholder'>";
echo "<button class='deletebutton'>Smazat</button>";
echo "<button class='updatebutton'>Upravit</button>";
echo "<input id='prime'  type='hidden' attr='id' value='$zaznam[0]'>";
echo "</div>";
echo "<div class='clearfix'></div>";    
echo "</form>";
endwhile;

echo "</div>";

mysqli_close($connection);

显示数据库中的数据,以便在.update按钮单击时更新它们。 数据由jquery ajax传递

$('.updatebutton').on('click', function(){

var idVal = $(this).closest('.newsholder').find('#prime').val();
var displaynadpisVal = $(this).closest('.newsholder').find('#displaynadpis').val();
var displayboldVal = $(this).closest('.newsholder').find('#displaybold').val();
var displaytextVal = $(this).closest('.newsholder').find('#displaytext').val();

alert(displaynadpisVal);

$.ajax({url:"updaterecord.php",
type:"POST",
cache:false,
data:{id: idVal, displaynadpis: displaynadpisVal, displaybold: displayboldVal, displaytext: displaytextVal}

}); }); 

到php脚本

$connection = mysqli_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD, SQL_DBNAME) ;

if (mysqli_connect_errno($connection))
 {
  echo "Nespojeno s MySQL: " . mysqli_connect_error();
  }

$id = $_POST['id'];
$updatenadpis = $_POST['displaynadpis'];
$updatetextbold = $_POST['displaybold'];
$updatetext = $_POST['displaytext'];


echo $updatetext;

$sql = "UPDATE novinky SET nadpis='$updatenadpis',
                         textbold='$updatetextbold',
                         text='$updatetext'



WHERE id = '$id'" 
   ;


$retval = mysqli_query($connection, $sql);
if(! $retval )
{
 die('Could not enter data: ' . mysqli_connect_error());
}
echo "Entered data successfully\n";

mysqli_close($connection);

更新数据库。问题是,它有时只能起作用,但在大约70%的情况下它不会发生任何变化。数据存储在js变量中就好了,当通过alert()测试时,它们每次都存在。所以问题必须在mysqli_query()中吗?还是AJAX方法?我尝试过其他帖子的很多选项和建议,但没有运气。谢谢你的帮助...

1 个答案:

答案 0 :(得分:0)

这里最大的问题是您将原始用户输入传递给查询。将它分配给变量不会改变任何东西!

您应该过滤从用户收到的所有内容,并使用准备好的语句以确保您的安全。

另请勿使用mysqli_connect_error()检查查询错误。使用mysqli_error()