PHP MySQL вставьте условие суждения - PullRequest
1 голос
/ 09 мая 2011

У меня есть HTML-форма с 4 пунктами.

title и content требуются.

link и image являются необязательными.

Так вот, что я написал, но я не могу вставить данные в базу данныхЕсть ли ошибка в моем условии условия для URL и изображения?Спасибо

if($_SERVER['REQUEST_METHOD'] == "POST") {

$ttt = strlen(htmlspecialchars(trim($_POST['title'])));
$ccc = strlen(htmlspecialchars(trim($_POST['content']))); // count title and content charters

$title = htmlspecialchars(trim($_POST['title']));
$content = htmlspecialchars(trim($_POST['content']));
$url = htmlspecialchars(trim($_POST['url']));
$image = htmlspecialchars(trim($_POST['image']));


if($url!=''){
    if ( !preg_match( '|^(ht|f)tp(s?))://|', $url ){
        echo "wrong";
        mysql_close($db);
    }
} // if $url is not empty, judge is it began as a http:// ? else close the db link 

if($image!=''){
    if ( !getimagesize($image)){
        echo "wrong";
        mysql_close($db);
    }
} // if $image is not empty, use getimagesize judge is it a real image? else close the db link

if(($ttt > 2 && $ttt < 201) && ($ccc > 29 && $ccc < 1001)) {
$sql= "INSERT INTO msg (title, content,image,link) VALUES ('".$title."','".$content."', '".$image."', '".$url."')";//if title charters between 3-200 and content charters between 30-1000, do insert into thing

if(mysql_query($sql))
{
  echo "insert done"; 
}else{
  echo "insert wrong";
}

}else{
  echo "your title or content is out of the words limit";
}


}

mysql_close($db);

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Изменение:

if($link!=''){
    if ( !preg_match( '|^(ht|f)tp(s?))://|', $url ){
        echo "wrong";
        mysql_close($db);
    }
}

на

if($url !=''){
    if ( !preg_match( '|^(ht|f)tp(s?))://|', $url ){
        echo "wrong";
        mysql_close($db);
    }
} 

, чтобы мы могли помочь вам лучше показать ваше заявление в $ sql;

ОБНОВЛЕНИЕ:

Очень трудно понять, как проблема, вот что вы можете сделать, чтобы увидеть, в чем проблема:

$ result = mysql_query ($ sql) или die ('Error:' mysql_error ());

Таким образом, вы можете увидеть, что является ошибкой в ​​вашем запросе, я уверен, что это проблема с выходом, поэтому вот что вы можете добавить;

$title = htmlspecialchars(trim($_POST['title']));
$content = htmlspecialchars(trim($_POST['content']));
$url = htmlspecialchars(trim($_POST['url']));
$image = htmlspecialchars(trim($_POST['image']));


$title = mysql_real_escape_string($title);
$content = mysql_real_escape_string($content);
$url = mysql_real_escape_string($url);
$image = mysql_real_escape_string($image);

таким образом, если естьлюбые специальные символы, которые они будут экранированы

0 голосов
/ 09 мая 2011

Кажется вероятным, что один из вызовов mysql_close_db может быть проблемой? Если нет, пожалуйста, опубликуйте результаты отображения $ sql перед вызовом mysql_query, а также любые полученные ошибки или ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...