Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Не добавляется строка в базу


Автор: SanychBY 20.6.2013, 00:05
Здравствуйте
Код

$cs = mysql_query("SELECT name,lname FROM users WHERE id='$uido'",$db);
        $csrow = mysql_fetch_array($cs);
 
        $text = "<a href='/?id=".$uido."'>@".$csrow['name']." ".$csrow['lname']."</a> ".$text;
        $rezultatv0 = mysql_query("INSERT INTO comment (rod,otv,a,id,text) VALUES ('$pid','$uido','$id','$qsu','$text')");
        echo $text;

если убрать $text = "<a href='/?id=".$uido."'>@".$csrow['name']." ".$csrow['lname']."</a> ".$text;, то все работает(строка добавляется в базу),а так не хочет, но если ее вывести, то получается то, что мне нужно.



В чем проблема? Спасибо.

Автор: Arantir 20.6.2013, 02:29
А Вы вставьте в запрос этот текст и посмотрите, что получится. 
Через 9 символов закрывается кавычка, открытая перед текстом в запросе. А дальше для базы данных идет белеберда, на которую она не знает как реагировать.

Во-первых, символы в строках нужно экранировать.
Во-вторых, не надо пользоваться библиотеками 15-летней давности.
В-третьих, уже давно, так сказать, с заботой о Вас, придумали предподготовленные запросы, которые намного более надежны и не требуют ручного экранирования.
Код
$mysqli = new mysqli('localhost', 'username', 'password', 'db');

if(mysqli_connect_errno()) {
   echo "Connection Failed: " . mysqli_connect_errno();
   exit();
}

if($stmt = $mysqli -> prepare("INSERT INTO `comment` (`rod`,`otv`,`a`,`id`,`text`) VALUES (?,?,?,?,?)")) 
{
   /* s - string, b - blob, i - int, d - double */
   $stmt->bind_param("iiiss", $pid, $uido, $id, $qsu, $text);

   $stmt->execute();
   $stmt->close();
}

$mysqli->close();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)