Veritabanına PHP Ekle çalışmıyor

4 Cevap php

Ben metin düzenleme olabilir ve ileride kullanılmak üzere bir db kaydetmek istiyorsunuz ki selamlar ben şu php script yaptı. Ancak ben güncelleme / insert sorguları hafif bir engele isabet değilim. Ben yanlış ne yapıyorum emin değilim ama komutları tek yürütecek. Bu bir hosting sorun olup olmadığını ben emin değilim ya da ben yanlış bir şey yapıyorum.

Herhangi bir fikir?

if(isset($_SESSION["logged"]) && $_SESSION["logged"]==1){   
if($_POST['action']=="edit"){
    $query=mysql_query("select * from page where active=1 AND heading='".$_POST['selectedpage']."'");
    $row = mysql_fetch_array($query, MYSQL_ASSOC);

    echo "<h1>HTML Editor </h1><br>";
    echo "<form name='saveform' action='./action.php'  method='post'>";
    echo "<textarea rows='100' cols='100' name='updateBox'>".$row['content']."</textarea>";
    echo "<br><input name='action' type='submit' value='save edit'>";
    echo "<input name='heading' type='hidden' value='".$row['heading']."'>";
    echo "</form>";
}
else if($_POST['action']=="save edit"){

    $query=mysql_query("UPDATE page SET active='0' where heading='".$_POST['heading']."'");
    $query=mysql_query("INSERT into page(heading,content,active) values('".$_POST['heading']."','".$_POST['updateBox']."','1')");
    echo "<p>Changes saved succesfully!</p>";
    echo "$_POST['updateBox']
}

4 Cevap

Eğer echo mysql_error($query) çalıştırdığınız her sorgudan sonra ararsanız, bu sorgu ile ilgili bir hata olup olmadığını görmek mümkün olacaktır. Sorgunuz içeriği ile ilgili bir sorun olabilir.

SQL Enjeksiyon için herhangi sanitizasyonunun performans değil, bu nedenle içerik içinde bir tırnak işareti varsa, bu sorgu kıracak. Bu, (sizin sorguları kullanıcı girişi SQL enjeksiyonu savunmasız) oldukça tehlikeli olduğunu ve (mysql_real_escape_string tüm sorgu değişkenleri kullanarak, ya PDO veya {[geçiş düşünmelisiniz 2)]} sürücüleri. Bu sürücüler destek sorgu SQL enjeksiyonu önlemek için mükemmel bir yöntem olan, bağlama.

Edit for editorialism :)

Bir kenara, bu sizin için otomatik olarak hataları bu tür işlemek için hızlı bir veritabanı sarıcı veya işlev işleyicisi ile gelip genellikle oldukça kolaydır. Ben bir sınıf tabanlı sarıcı kullanır, ama şimdi o kadar ileri gitmek istemiyordu, böyle bir şey yapabilirsiniz:

//very quick-and-dirty
function queryOrDie($query)
{
    $query = mysql_query($query);
    if (! $query) exit(mysql_error());
    return $query;
}

Bunu sadece aracılığıyla tüm sorularına geçebileceği, ve bunu hata ayıklama daha kolay bir zaman olurdu. Orada veritabanı sarıcı sınıflar bir yeri de vardır, ben son derece etrafında bir yumruklamak tavsiye ederim. Onlar hayatı çok daha kolay. :)

Hata nedir?

Yazısının başında bu PHP ekleyin:

ini_set('display_errors', 'On');
error_reporting(E_ALL);

Ayrıca bu deneyin:

$query=mysql_query("INSERT into page(heading,content,active) values('".$_POST['heading']."','".$_POST['updateBox']."',1)");

Also :) using data from the POST directly in the insert query is a security threat: http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

Emin olun heading anahtar veya benzersiz olarak tanımlı değil. Bu bağlamda bir sorun neden olabilir.

(Benim adım Tom Ly olduğunu)

I also had the PHP (INSERT INTO) query not working: my original query was:

mysql_query("INSERT INTO `videousers` (`user_id`,`user_name`,`user_password`,`contact_person`,`organisation`,`contact_tel`,`email`) VALUES ('','{$user}','{$pass}','{$cperson}','{$organ}','{$cphone}','{$email}'");

çalışma değildi, bu yüzden aşağıdaki sorgu değişti:

mysql_query("INSERT videousers SET user_name='$user',user_password='$pass', contact_person='$cperson', organisation='$organ', contact_tel='cphone', email='$email'");

ve işe yaradı. Nedenini bilmiyorum, ama işe yarıyor, çünkü ben işimi bitirmek için kullanabilirsiniz.