PHP проверяет числовое значение внутри цикла foreach с парами ключей и значений?

Я пытаюсь проверить значение ассоциативного массива, если оно числовое, вот мой код

$data = array('fullname'=>'Salah Saed', 'age'=>'33', 'gender'=>'Female'); public function insert($data, $table){ /*$query = "INSERT INTO `oop_crud`.`customers` ("; $query .= "`fullname` , `age` , `gender` )"; $query .= "VALUES ('".$fullname."', '".$age."', '".$gender."')"; */ $feilds = array(); $feilds_value = array(); foreach ($data as $field => $field_value){ $feilds[] = $field; echo $field; if (is_numeric($field_value)){ $feilds_value[] = $field_value; }else{ $feilds_value[] = "'".$field_value."'"; } } $query = "INSERT INTO ".$table." ("; $query .= implode(',', $feilds).")"; $query .= "VALUES ("; $query .= implode(',',$feilds_value).")"; echo $query; 

Он возвращает строку, поэтому, что не так с моим кодом, в разделе условий я использовал $ field_value, и эта переменная имеет данные массива, сеет, как получить значение массива.

Прежде всего, вставки MySQL не зависят от типа, поэтому

 SET UserAge = '33' 

такой же как

 SET UserAge = 33 

поэтому вам было бы безопаснее добавлять цитаты. Тем не менее, вы являетесь наиболее безопасным, если вы ищете подготовленные заявления с использованием PDO (также называемых параметризованными запросами). Взгляните на это

Предполагается, что http://php.net/is_numeric распознает такие значения, как 0x539 и 0b10100111001 которые не могут быть распознаны MySQL; вам нужно будет проверить эти случаи.

Вот упрощенная версия вашей функции, если вы хотите улучшить функцию генератора запросов,

 function insert($data, $table){ $column_sql = '`' . implode('`,`', array_keys($data)) . '`'; $record_sql = "'" . implode("','", $data) . "'"; return "INSERT INTO `{$table}` ({$column_sql}) VALUES ({$record_sql})"; } 

Подача его $data и test даст

 INSERT INTO `test` (`fullname`,`age`,`gender`) VALUES ('Salah Saed','33','Female') 

ПРИМЕЧАНИЕ. Необходимо избегать значений mysqli_real_escape_string() , я оставлю это до вас, как упражнение 🙂