Вставка значений флажков в базу данных MySQL с помощью PHP - PullRequest
0 голосов
/ 04 февраля 2012

каждый.

Я знаю, что это очень далекий предмет, но я искал повсюду и не могу решить его.

У меня есть ряд флажков на моей веб-странице, и мне нужно вставить значения в базу данных.

Для того, что я прочитал, это должно быть сделано так:

<tr>
        <td class="titulofila">Sal&oacute;n Completo con: </td>
        <td>
        <table width="100%"><tr><td>
            <label>
            <input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="mesa"  />
            mesas </label>
        </td><td>
            <label>
            <input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sillas"  />
            sillas </label>
        </td><td>
            <label>
            <input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sofa"  />
            sof&aacute;</label>
        </td></tr></table>
        </td>
    </tr>

И затем, в PHP-скрипте, кнопка отправки принимает:

 $equipSalonF=mysql_real_escape_string(implode(',', $_POST['equipSalon']));
mysql_query("INSERT INTO markers (ciudad,
                            zona,address,name,
                            telefono,email,piso,
                            tipo,erasmus,nhabitaciones,
                            plazas,equipHabita,nbanos,
                            salon,cocina,electrodomesticos,
                            garaje,internet,calefaccion,
                            sexo,precio,superficie,otros,
                            fecha,lat,lng)
        VALUES ('{$_POST['ciudad']}','{$_POST['zona']}',
                '{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}',
                '{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}',
                '{$_POST['erasmus']}','{$_POST['nhabitaciones']}',
                '{$_POST['plazas']}','{$equipHabitaF}',
                '{$_POST['nbanos']}','{$equipSalonF}',
                '{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}',
                '{$_POST['internet']}','{$_POST['calefaccion']}',
                '{$_POST['sexo']}','{$_POST['precio']}',
                '{$_POST['superficie']}','{$_POST['otrosF']}',
                '{$_POST['fecha']}','{$_POST['lat']}',
                '{$_POST['lng']}'",$link);

У меня есть больше, чем эти флажки, и это не работает, просто говорит: «У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с« »в строке 21 «

Если кто-то захочет просмотреть полные файлы index.html и php, вы можете получить их здесь: http://paste.ideaslabs.com/show/8qEHDnsZdr форма начинается со строки 147. И файл PHP здесь: http://paste.ideaslabs.com/show/IJFLSHM7Ka

Заранее спасибо.

1 Ответ

2 голосов
/ 04 февраля 2012

Флажки ставятся только тогда, когда они отмечены галочкой.Поэтому, если флажок не отмечен, значение не будет отображаться в $_POST.Кроме того, вы вообще не должны давать какие-либо значения флажкам.Вместо этого используйте имена, чтобы различать их.

В базе данных я обычно представляю чекбоксы с миниатюрными символами и сохраняю 1 для отмеченных и 0 для непроверенных.уникальный.Таким образом, вы не можете иметь несколько элементов с одинаковым идентификатором.И вы должны дезинфицировать ваши входные данные, чтобы предотвратить инъекцию SQL.Используйте mysql_real_escape_string() для пользовательских данных, которые поступают в базу данных.

Обновление

Основная проблема заключается в том, что в запросе отсутствует ')' при последнейлиния.Запрос должен выглядеть как

$query = "INSERT INTO markers (ciudad,
                        zona,address,name,
                        telefono,email,piso,
                        tipo,erasmus,nhabitaciones,
                        plazas,equipHabita,nbanos,
                        salon,cocina,electrodomesticos,
                        garaje,internet,calefaccion,
                        sexo,precio,superficie,otros,
                        fecha,lat,lng)
    VALUES ('{$_POST['ciudad']}','{$_POST['zona']}',
            '{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}',
            '{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}',
            '{$_POST['erasmus']}','{$_POST['nhabitaciones']}',
            '{$_POST['plazas']}','{$equipHabitaF}',
            '{$_POST['nbanos']}','{$equipSalonF}',
            '{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}',
            '{$_POST['internet']}','{$_POST['calefaccion']}',
            '{$_POST['sexo']}','{$_POST['precio']}',
            '{$_POST['superficie']}','{$_POST['otrosF']}',
            '{$_POST['fecha']}','{$_POST['lat']}',
            '{$_POST['lng']}')";
mysql_query($query, $link);

Обратите внимание на закрывающий ')' в последней строке запроса.Также обратите внимание, что создание подобного запроса в переменной позволяет вывести созданный запрос, чтобы вы могли видеть, что именно отправляется в MySQL, а также вы можете проверить свой запрос в другой среде (например, в phpmyadmin или любой другой администрации базы данных).инструмент).

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