Помогите разобраться с одной непонятной проблемой в PHP-MySQL

12
O
На сайте с 24.07.2011
Offline
1
#11

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

www.job2biz.ru (http://www.job2biz.ru)
O
На сайте с 24.07.2011
Offline
1
#12

ну никто походу не сможет ответить на данный вопрос

C
На сайте с 04.02.2005
Offline
291
#13

Принципиальная разница в элементарной невнимательности и описке

UPDATE не равно UPATE

O
На сайте с 24.07.2011
Offline
1
#14
Chukcha:
Принципиальная разница в элементарной невнимательности и описке

UPDATE не равно UPATE

это опечатка лишь на форуме, в моём коде UPDATE

C
На сайте с 04.02.2005
Offline
291
#15

Тогда нужно видеть Ваш код, не тот который на сайте (который с неверным синтаксисом), а тот который не работает.

И начать рассказ с самого начала.

iexpert
На сайте с 01.09.2005
Offline
184
#16

$text = "UPDATE items SET header='{$_POST["header"]}', text='{$_POST["text"]}', sait='{$_POST["sait"]}', moderated='0' WHERE id='{$_POST["id"]}'";

И вам уже сказали о том, что нужно экранировать спецсимволы.

iexpert добавил 25.07.2011 в 19:47

ochenbogatiy:
собственно код

файл index.php
<?

include('functions.php');

if ($_GET['write'])
$result = writerecord();
?>
<html>
<head>
...
</head>
<body>
<?=$result ?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?write=1&id=2" method="post">
Заголовок:<input type="text" name="header" value="" size="80">
Текст:<textarea cols=50 rows=15 name="text"></textarea>
Сайт:<input type="text" name="sait" size="30" value="">
<input type="submit" name="change" value="Сохранить"></form>

</body>
</html>

файл functions.php
<?
function writerecord()
{
ob_start();

$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_POST['id']);

$text = "UPATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";
$r = mysql_query($text) or die("Query failed: " . mysql_error());
$result = ob_get_contents();
ob_end_clean();

return $result;
}
?>

Ну и чему будет равен $_POST["id"] ?

А во второй раз срабатывает, так как данные с таблице обнуляются, и, как следствие, условие WHERE id='' становится истинно

Кстати, хороший совет на будущее. Если вроде бы все верно, а кусок кода ну никак не работает, и при этом он вроде бы примитивный, и негде ошибиться, сотрите его и напишите заново. Глаз замыливается, реально можно очень долго выискивать элементарную ошибку, нужен либо свежий взгляд, либо переписать. последнее чаще всего быстрее.

Бойтесь ваших желаний, ибо они могут исполниться
Dreammaker
На сайте с 20.04.2006
Offline
569
#17

iexpert, тут все сложнее :)

ochenbogatiy:
это опечатка лишь на форуме, в моём коде UPDATE

ТС судя по всему боится, что его кривой код будет украден, поэтому не даёт оригинал, а пытается вызвать телепатические способности у форумчан, публикуя левый код.

O
На сайте с 24.07.2011
Offline
1
#18
Dreammaker:
iexpert, тут все сложнее :)


ТС судя по всему боится, что его кривой код будет украден, поэтому не даёт оригинал, а пытается вызвать телепатические способности у форумчан, публикуя левый код.

Ты даже не представляешь как тут всё сложно =) Копипасти код, да проверяй его сам)

Уважаемые форумчане, прошу сравнить и сказать, в чём приципиальное различие между моим кодом и тем, что выложил LovelASS; Итак, мой код (исправленный)

Файл index.php


<?

$link = mysql_connect("localhost", 'records', '333')
or die("Could not connect : " . mysql_error());
mysql_select_db('records', $link) or die("Could not select database");

include('functions.php');

if (isset($_GET['write'])) {


$result = writerecord();

}
?>
<html>
<head>
<title>Скрипт</title>
</head>
<body>
<?=$result;?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?id=392&write=1" method="post">
<p>Заголовок:<br> <input type="text" name="header" value="" size="80"></p>
<p>Текст:<br> <textarea cols=50 rows=15 name="text"></textarea></p>
<p>Сайт:<br> <input type="text" name="sait" size="30" value=""></p>
<p><input type="submit" value="Сохранить"></p>
</form>

</body>
</html>

файл functions.php


<?
function writerecord() {

ob_start();
$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_GET['id']);

$query = "UPDATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";

$result = mysql_query($query);
echo $query.'<br />'.$result;
if (!$result) $result = "<p><span style='color:red;'>Ошибка: ".mysql_error()."</span><br><b>Запрос: ".$query."</b></p>";
$res = ob_get_contents();
ob_end_clean();
return $res;

}
?>

Теперь его код

файл index.php


<?
$link = mysql_connect("localhost", 'records', '333')
or die("Could not connect : " . mysql_error());
mysql_select_db('records', $link) or die("Could not select database");

if (isset($_POST['write'])) {

include_once('functions.php');
$result = writerecord();

}
?>
<html>
<head>
<title>Скрипт</title>
</head>
<body>
<?=$result;?>

<form action="" method="post">
<input type="hidden" name="write" value="1">
<input type="hidden" name="id" value="2">

<p>Заголовок:<br> <input type="text" name="header" value="" size="80"></p>
<p>Текст:<br> <textarea cols=50 rows=15 name="text"></textarea></p>
<p>Сайт:<br> <input type="text" name="sait" size="30" value=""></p>
<p><input type="submit" value="Сохранить"></p>
</form>

</body>
</html>

файл functions.php


<?
function writerecord() {

$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_POST['id']);

$query = "UPDATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";
$result = mysql_query($query);

if (!$result) $result = "<p><span style='color:red;'>Ошибка: ".mysql_error()."</span><br><b>Запрос: ".$query."</b></p>";

return $result;

}
?>

И сразу, чтобы без вопросов лишних было ещё один мой код но РАБОЧИЙ(очень похож на первый)

файл index.php


<?
$link = mysql_connect("localhost", 'records', '333')
or die("Could not connect : " . mysql_error());
mysql_select_db('records', $link) or die("Could not select database");

include('functions.php');

if (isset($_POST['write'])) {


$result = writerecord();

}
?>
<html>
<head>
<title>Скрипт</title>
</head>
<body>
<?=$result;?>

<form action="<? echo $_SERVER['PHP_SELF'];?>?id=392" method="post">
<input type="hidden" name="write" value="1">
<p>Заголовок:<br> <input type="text" name="header" value="" size="80"></p>
<p>Текст:<br> <textarea cols=50 rows=15 name="text"></textarea></p>
<p>Сайт:<br> <input type="text" name="sait" size="30" value=""></p>
<p><input type="submit" value="Сохранить"></p>
</form>

</body>
</html>

файл functions.php


<?
function writerecord() {

ob_start();
$header = $_POST['header'];
$txt = mysql_escape_string($_POST["text"]);
$sait = mysql_escape_string($_POST['sait']);
$id = intval($_GET['id']);

$query = "UPDATE `saits` SET `header`='$header', `text`='$txt', `sait`='$sait' WHERE `id`='$id';";

$result = mysql_query($query);
echo $query.'<br />'.$result;
if (!$result) $result = "<p><span style='color:red;'>Ошибка: ".mysql_error()."</span><br><b>Запрос: ".$query."</b></p>";
$res = ob_get_contents();
ob_end_clean();
return $res;

}
?>

ВНИМАНИЕ!! Всё три кода формируют ОДИНАКОВЫЕ sql-запросы, НО в первом коде данные в таблице просто обнуляются

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий