2013-10-07 6 views
1

У меня есть эта система, в которой я храню данные флажка в массиве. Поэтому, если он проверен, он поместит значение в массив. Предположим, что есть 6 флажков, и я проверяю последние 3, тогда значения массива [3] [4] и [5] будут иметь значения, правильно? ОК.Вставить значения массива в базу данных

Теперь, если значения массива [0] [1] и [2] равны 0, поскольку они не были проверены, каково их значение?

Вопрос в том, что когда я вставляю MySQL в базу данных, и я использую этот код?

mysqli_query($con,"INSERT INTO accounts (chk1, chk2, chk3, chk4, chk5, chk6) VALUES ('$checkbox[0]', '$checkbox[1]', '$checkbox[2]', '$checkbox[3]', '$checkbox[4]', '$checkbox[5]'"); 

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

ответ

0

поставить этот код перед запросом

$checkbox[0]=(isset($checkbox[0]))?$checkbox[0]:0; 
$checkbox[1]=(isset($checkbox[1]))?$checkbox[1]:0; 
$checkbox[2]=(isset($checkbox[2]))?$checkbox[2]:0; 
$checkbox[3]=(isset($checkbox[3]))?$checkbox[3]:0; 
$checkbox[4]=(isset($checkbox[4]))?$checkbox[4]:0; 
$checkbox[5]=(isset($checkbox[5]))?$checkbox[5]:0; 

ИЛИ

// get $_POST value 
function initPostValue($elementVar, $defVal=null) { 
    if(!isset($_POST[$elementVar])){ 
     $_POST[$elementVar] = $defVal; 
    } 
    return $_POST[$elementVar]; 
} 
// get $_REQUEST value 
function initRequestValue($elementVar, $defVal=null) { 
    if(!isset($_REQUEST[$elementVar])){ 
     $_REQUEST[$elementVar] = $defVal; 
    } 
    return $_REQUEST[$elementVar]; 
} 
// get $_GET value 
function initGetValue($elementVar, $defVal=null) { 
    if(!isset($_GET[$elementVar])){ 
     $_GET[$elementVar] = $defVal; 
    } 
    return $_GET[$elementVar]; 
} 

Example : $checkbox[0] = initRequestValue('checkbox[0]',0); 

использования выше функций для получения любого значения взять из $ _GET, $ _ POST, $ _ REQUEST поэтому нет никакой необходимости для проверки пустого

0

У них не будет значений.

Вы также хотите проверить их, используя mysqli_real_escape_string.

Я бы сделал isset на каждый элемент флажка и установил его в 0, если его там нет.

Пример кода по запросу:

$checkbox[0] = isset($_REQUEST['checkboxName']) ? mysql_real_escape_string($_REQUEST[$_REQUEST['checkboxName']]) ? 0 ; 

если значение всегда 1, а затем использовать 1 вместо mysql_real_escape_string($_REQUEST[$_REQUEST['checkboxName']])

+0

Просьба привести пример кода – DarrenGriffin

+0

добавлен Пример кода – bear

0
$data = array(); 
for($a=0; $a<max(array_keys($checkbox)); $a++) { 
    $data["chk$a"] = $checkbox[$a] ?: '0'; 
} 
$sql = 'INSERT INTO accounts (\''.implode('\',\'', array_keys($data)).'\') VALUES ('.implode(',',$data).')'; 
1

Почему бы не просто применять DEFAULT 0 ограничения для каждого check{n} поля , в базе данных?

Таким образом, (1) вы сделаете свои данные защищенными независимо от интерфейса и (2) будет меньше кода для написания, так как потребуется меньше проверок.

Смежные вопросы