Подключение к базе данных с помощью Msqli API - PullRequest
0 голосов
/ 07 мая 2018

Помогите настроить этот скрипт для меня. Подключение к базе данных было написано в MySQL. Я думаю, я пытался использовать diff-соединение с MySQLi, но мне кажется, что что-то не так в кодах после подключения. Любая помощь будет высоко оценена. Коды PHP:

//my config
   $servername = "localhost";
   $username = "root";
   $password = "";
   $databasename = "subscribe";


   $conn = new mysqli($servername, $username, $password, $databasename);
   if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
   }
   echo "done!!";


$subscribe = (isset($_POST['action']) && $_POST['action'] ==    
'unsubscribe')?false:true;

if ($subscribe){
$fields = array(
    array('name' => 'email', 'valid' => array('require', 'email')),
    array('name' => 'name', 'valid' => array('require')),
);
}else{
$fields = array(
    array('name' => 'unsubscribe_email', 'valid' => array('require',  
'email')),
    array('name' => 'confirm', 'valid' => array('require'), 'err_message'
=> 'confirm'),
);
}

Выше было соединение, которое я установил в mysqli. теперь строки ниже являются другой частью сценария, который, я уверен, мне все еще не хватает чего-то, чтобы заставить его работать. Это старый скрипт подписки, который я получил из сети.

$error_fields = array();
$get = array();
foreach ($fields AS $field){
$value = isset($_POST[$field['name']])?$_POST[$field['name']]:'';
if (is_array($value)){
    $value = implode('/ ', $value);
}
if (get_magic_quotes_gpc()){
    $value = stripslashes($value);
}
$get[$field['name']] = mysqli_real_escape_string($value);
$is_valid = true;
$err_message = '';
if (!empty($field['valid'])){
    foreach ($field['valid'] AS $valid) {
        switch ($valid) {
            case 'require':
                $is_valid = $is_valid && strlen($value) > 0;
                $err_message = 'Field required';
                break;
            case 'email':
                $is_valid = $is_valid && preg_match("/^[_a-z0-9-]+(\.[_a-
   z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $value);
                $err_message = 'Email required';
                break;
            default:                
                break;
        }
    }
   }
   if (!$is_valid){
    if (!empty($field['err_message'])){
        $err_message = $field['err_message'];
    }
    $error_fields[] = array('name' => $field['name'], 'message' =>    
 $err_message);
 }
}

if (empty($error_fields)){
if ($subscribe){
    $data = array(
        'email' => "'".$get['email']."'",
        'name' => "'".$get['name']."'",
        'date_subscribe' => 'NOW()',
        'status' => "'T'",
    );
    $sql = "REPLACE INTO subscription_form (`".implode("`, `",    
 array_keys($data))."`) VALUES(".implode(", ", array_values($data)).")";
 }else{
    $sql = "UPDATE subscription_form SET date_unsubscribe = NOW(), status
 = 'F' WHERE email = '".$get['unsubscribe_email']."'";
}
if (!empty($sql)){
    $sql_result = mysqli_query ($sql, $connection ) or die ('request  
"Could not execute SQL query" '.$sql);
}
echo (json_encode(array('code' => 'success')));
}else{
echo json_encode(array('code' => 'failed', 'fields' => $error_fields));
}

Извините, но я тороплюсь вперед, так как я уверен, что доберусь туда постепенно, но мне просто нужно сделать это, чтобы закончить какой-то сайт, который я разрабатываю. Любая Помощь будет оценена, пожалуйста. Все, что мне нужно, это немного направления, пока я продолжаю читать, чтобы улучшить свои навыки в phhp и базе данных. Я только на 1/4 в php и backend.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Для первой части кода я думаю, что вы должны написать блок if..else как ниже

if ($subscribe === true){
  echo 'In IF BLOCK<br />';
  $fields = array(
  array('name' => 'email', 'valid' => array('require', 'email')),
   array('name' => 'name', 'valid' => array('require')),
 );

 }else if($subscribe === false){
   echo 'In the ELSE BLOCK <br />';
    $fields = array(
         array('name' => 'unsubscribe_email', 'valid' => array('require',  
         'email')),
         array('name' => 'confirm', 'valid' => array('require'), 
            'err_message' => 'confirm'),
           );

 } else{
    echo 'This else block i have written for clearification only';
}

=============================================== =============

IN SHORT if и else if должны содержать условие , которое оценивается

if(condition1_for_evalute){

 } elseif(condition2_for_evalute){

 } else{

 }

Второй блок кода Я не получил то, что вы хотите спросить. Извините за это

0 голосов
/ 07 мая 2018

Пожалуйста, проверьте строку ниже, вы использовали строку подключения как $ connection, она должна быть $ conn

$sql_result = mysqli_query ($sql, $connection )

Так что замените предложение выше на $ sql_result = mysqli_query ($ sql, $ conn) это должно решить вашу проблему

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