Параметризованный запрос PHP/SQL Server

У меня есть веб-форма, которая вводит сведения о событии в базу данных, которая будет указана на веб-сайте. Форма фиксирует имя фотографии, название события, дату исключения события из списка, номер сортировки, описание и битовый флаг «Масса».

Поле описания представляет собой обычное текстовое поле. Я знаю, что мне, вероятно, следует изменить поле на форматированный текст, но это на день, когда у меня будет время изучить, как это сделать. В любом случае... Я добавляю символы HTML в свой текст, чтобы отформатировать его. Я обнаружил, что косая черта закрывающих символов, таких как </ strong>, рассматривается как escape-символ, а не как часть текста. Как мне сказать моему коду, чтобы он не убегал?

Код:

//connect to the database.
$serverName = "livedata";
$connectionInfo = array( "Database"=>"administration", "UID"=>"User", "PWD"=>"PASSWORD", "LoginTimeout"=>60 );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if ( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

/* Set up the parameterized query. */  
$tsql = "insert into tblevents (Photo, title, Unlist, Sort, Description, Par_num, mass ) values(?,?,?,?,?,?,?)";  

/* Set parameter values. */  
$dt = $_POST['unlist'];
if ($dt == ""){
    $dt = null; 
}
$Sort = $_POST['sort'];
if ($Sort == "" ){
//query to get the max of sort in the database items
//+1 sort

    $sql2 = "SELECT tblevents.Par_Num, Max(tblevents.Sort) AS MaxOfSort FROM parishevents.dbo.tblevents GROUP BY tblevents.Par_Num HAVING (((tblevents.Par_Num) = " . $_POST['par_num'] . "));";
        //echo "SQL2: " . $sql2 . "<br><br>";

    $stmt2 = sqlsrv_query( $conn, $sql2);
    if ( $stmt2 === false ) {
     die( print_r( sqlsrv_errors(), true));
    }

    $result2 = sqlsrv_query($conn, $sql2);
    while($row2 = sqlsrv_fetch_array($result2)) { 
        $Sort = $row2['MaxOfSort'] +1;
}
    if (isset($_POST['mass'])){
        if ($_POST['mass'] == "on"){
            $mass = -1;
        }
        else{
            $mass = 0;
        }
    }else{
        $mass = 0;  
    }
$params = array($_POST['photo'], $_POST['title'], $dt, $Sort, $_POST['description'], $_POST['par_num'], $mass);  

/* Prepare and execute the query. */  
$stmt = sqlsrv_query($conn, $tsql, $params);  


/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt);  

}

Возможно, вы захотите взглянуть на свой запрос. HAVING используется для фильтрации групп, WHERE используется для фильтрации строк (это то, что вы пытаетесь сделать здесь).

Sean Lange 23.01.2019 18:14

Что касается рассматриваемого вопроса, я не понимаю, с чем у вас возникла проблема, но я почти уверен, что это не проблема с сервером sql.

Sean Lange 23.01.2019 18:16

Прежде чем опубликовать свой вопрос... Я получил предупреждение PHP, и запись не записывалась в базу данных. Я только что попробовал еще раз, и теперь я получаю другое предупреждение: Предупреждение PHP: sqlsrv_free_stmt() ожидает, что параметр 1 будет ресурсом, логическим значением, заданным в add_event.php в строке 59. Я прокомментировал строку, и предупреждение исчезло, но что делать? предупреждение значит?

RCDAWebmaster 23.01.2019 19:14

@RCDAWebmaster Предупреждение ясно: $stmt — это false после вызова $stmt = sqlsrv_query($conn, $tsql, $params);. Пожалуйста, включите проверку ошибок if ( $stmt === false ) {die( print_r( sqlsrv_errors(), true));} и, если возможно, опубликуйте сообщение об ошибке.

Zhorov 23.01.2019 19:57

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

RCDAWebmaster 23.01.2019 20:45

Я проверил свой запрос в Access, и он выдает синтаксическую ошибку, если я использую WHERE. Мне нужно использовать HAVING, так как я нахожу максимальное значение сортировки событий в определенном месте.

RCDAWebmaster 24.01.2019 19:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
65
0

Другие вопросы по теме