2013-06-27 5 views
0

Привет всем, у меня есть небольшая проблема, когда по моей базе данных не обновляется мое простое приложение для показа! Мое приложение работает отлично при вставке записи в базу данных с этого синтаксического анализа сценария ..Строки, не обновляющиеся

<?php 
     $testtitle = preg_replace('#[^a-z0-9""-. ]#i', '', $_POST['ts_tt']); 
     $testbody = preg_replace('#[^a-z0-9""-. ]#i', '', $_POST['ts_tb']); 
     $compowner = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_co']); 
     $ownertitle = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_ot']); 
     $compname = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_cn']); 
     $compwebsite = preg_replace('#[^a-z0-9 .-]#i', '', $_POST['ts_cw']); 

     include_once "../php_includes/db_conx.php"; 

     $sql = "INSERT INTO testimonials (testtitle, testbody, compowner, ownertitle, compname, compwebsite) 
       VALUES ('$testtitle', '$testbody', '$compowner', '$ownertitle', '$compname', '$compwebsite')"; 
     if (!mysql_query($sql, $connection)){ 
      die('Error: ' . mysql_error()); 
    } 
    exit(); 
?> 

Я считаю, что мой сценарий Обновление не обновляется! Я что-то упустил здесь, ребята? Большое спасибо ...

<?php 
     $pid = $_POST['pid']; 
     $testtitle = preg_replace('#[^a-z0-9""-. ]#i', '', $_POST['ts_tt']); 
     $testbody = preg_replace('#[^a-z0-9""-. ]#i', '', $_POST['ts_tb']); 
     $compowner = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_co']); 
     $ownertitle = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_ot']); 
     $compname = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_cn']); 
     $compwebsite = preg_replace('#[^a-z0-9 .-]#i', '', $_POST['ts_cw']); 

     include_once "../php_includes/db_conx.php"; 

     $sql = "UPDATE testimonials SET testtitle='$testtitle', testbody='$testbody', compowner='$compowner', ownertitle='$ownertitle', compname='$compname', compwebsite='$compwebsite' WHERE id='$pid' LIMIT 1"; 

     if (!mysql_query($sql, $connection)){ 
      die('Error: ' . mysql_error()); 
    } 
    exit(); 
?> 

UPDATE Это то, что я есть сейчас, ребята ...

<?php 
$sql = "SELECT * FROM testimonials WHERE id='$pid'"; 

     $pid = $_POST['pid']; 
     $testtitle = preg_replace('#[^a-z0-9""-. ]#i', '', $_POST['ts_tt']); 
     $testbody = preg_replace('#[^a-z0-9""-. ]#i', '', $_POST['ts_tb']); 
     $compowner = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_co']); 
     $ownertitle = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_ot']); 
     $compname = preg_replace('#[^a-z0-9 ]#i', '', $_POST['ts_cn']); 
     $compwebsite = preg_replace('#[^a-z0-9 .-]#i', '', $_POST['ts_cw']); 

     include_once "../php_includes/db_conx.php"; 

     $sql = "UPDATE testimonials SET testtitle='$testtitle', testbody='$testbody', compowner='$compowner', ownertitle='$ownertitle', compname='$compname', compwebsite='$compwebsite' WHERE id='$pid'"; 

     if (!mysql_query($sql, $connection)){ 
      die('Error: ' . mysql_error()); 
    } 
    exit(); 
?> 

Привет всем, как предложено здесь мой HTML формы в соответствии с просьбой! Да, я знаю, что это в таблице. У меня также есть некоторые PHP код выше форме, это ...

<?php 
$pid = ereg_replace("[^0-9]", "", $_POST['pid']); 
include_once "../php_includes/db_conx.php"; 
$sql = "SELECT testtitle, testbody, compowner, ownertitle, compname, compwebsite FROM testimonials WHERE id='$pid' LIMIT 1"; 
$query = mysql_query($sql, $connection) or die (mysql_error()); 
while ($row = mysql_fetch_array($query)) { 
    $testtitle = $row["testtitle"]; 
    $testtitle = str_replace("<br />", "", $testtitle); 
    $testbody = $row["testbody"]; 
    $testbody = str_replace("<br />", "", $testbody); 
    $compowner = $row["compowner"]; 
    $ownertitle = $row["ownertitle"]; 
    $compname = $row["compname"]; 
    $compwebsite = $row["compwebsite"]; 
} 
mysql_free_result($query); 
?> 

И тогда моя форма ...

<form method="post" action="testimonial_edit_parse.php" onsubmit="return validate_form ();"> 
    <tr> 
    <td width="12%" align="right" bgcolor="#F5E4A9">Testimonial Full Title</td> 
    <td width="88%" bgcolor="#F5E4A9"><input name="ts_tt" id="testtitle" type="text" size="80" maxlength="64" value="<?php echo $testtitle; ?>" /></td> 
    </tr> 
    <tr> 
    <td align="right" valign="top" bgcolor="#DAEAFA">Testimonial Body</td> 
    <td bgcolor="#DAEAFA"><textarea name="ts_tb" id="testbody" cols="60" rows="16"><?php echo $testbody; ?></textarea></td> 
    </tr> 
    <tr> 
    <td align="right" bgcolor="#D7EECC">Company Owner</td> 
    <td bgcolor="#D7EECC"><input name="ts_co" id="compowner" type="text" maxlength="64" size="80" value="<?php echo $compowner; ?>" /></td> 
    </tr> 
    <tr> 
    <td align="right" bgcolor="#D7EECC">Owner Title</td> 
    <td bgcolor="#D7EECC"><input name="ts_ot" id="ownertitle" type="text" maxlength="64" size="80" value="<?php echo $ownertitle; ?>"/></td> 
    </tr> 
    <tr> 
    <td align="right" bgcolor="#D7EECC">Company Name</td> 
    <td bgcolor="#D7EECC"><input name="ts_cn" id="compname" type="text" maxlength="64" size="80" value="<?php echo $compname; ?>" /></td> 
    </tr> 
    <tr> 
    <td align="right" bgcolor="#D7EECC">Company Website</td> 
    <td bgcolor="#D7EECC"><input name="ts_cw" id="compwebsite" type="text" maxlength="64" size="80" value="<?php echo $compwebsite; ?>" /></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td><input type="submit" name="ts_button" value="Submit this edit" /></td> 
    </tr> 
    </form> 
+0

Вы уверены, что '$ pid' существует в базе данных? –

+2

Функции PHP, начинающиеся с 'mysql_', устарели от PHP 5.5.0. Если вы в состоянии сделать это, попробуйте обновить свой код, чтобы использовать [MySQLi] (http://www.php.net/manual/en/book.mysqli.php) или [PDO] (http://www.php.net/manual/en/ref.pdo-mysql.php). –

+3

Я вижу слишком много таких вопросов. Потратьте время, чтобы узнать, как [интерпретировать ошибки и исправить свой код] (http://jason.pureconcepts.net/2013/05/fixing-php-errors/). –

ответ

0

Во-первых, я бы сделал это с PDO .... потому что ... mysql_ * функции устарели и скоро будут удалены из PHP. PDO более безопасен, и вам не обязательно иметь в mysql_real_escape_string все, что вам нужно в подготовленных операциях.

$conn = new PDO("mysql:host=localhost;dbname=$yourdbname",$yourdbuser,$yourdbpass); 

    $sql = "UPDATE testimonials 
    SET testtitle=?, testbody=?, compowner=?, ownertitle=?, compname=?, compwebsite=?, 
    WHERE id=?"; 
    $q = $conn->prepare($sql); 
    $q->execute(array($testtitle,$testbody, $compowner, $ownertitle, $compname, $compwebsite, $pid)); 

Но чтобы ответить на ваш вопрос ..... Я подозреваю, что ваш $_POST['pid'] на самом деле не проходит должным образом, следовательно, строка не обновляется.

Вы должны показать нам ваш HTML формы что представляет эту информацию, если вы хотите получить больше помощи

EDIT

Как я и подозревал, что вы не проходящие в $ ВЗОМТА где-нибудь в том, что формы, поэтому сценарий с другой стороны не имеет представления о том, какой идентификатор нужно обновить.

Вам необходимо заполнить скрытое поле с идентификатором из этой записи

<input type="hidden" name="pid" id="pid" value="<?echo $idfromdatabase;?>"> 
+0

Cheers KyleK MySQL не моя самая сильная точка! Спасибо за помощь, добавили мою форму вверх! –

0

Remove LIMIT 1 в UPDATE она должна быть тонкой. Вы не нуждаетесь в LIMIT в синтаксисе UPDATE, за исключением случаев, когда вы хотите подсчитать строку

+0

Приветствия, но он до сих пор не обновляется. я обновлю то, что у меня есть в моем первоначальном вопросе. большое спасибо –