этот php код работает на локальном хосте, но не на сервере? - PullRequest
0 голосов
/ 22 марта 2020

мы создаем коллажный проект, который собирается хранить имя, категорию и данные веб-сайта, поэтому мы закончили с веб-сайтом, и теперь мы хотим создать приложение, которое будет взаимодействовать с сервером через API. у нас был простой код, подобный этому, в скрипте php при добавлении данных в базу данных echo json_encode(true). как знают android программисты, в модифицированной библиотеке используется механизм типа пары «ключ-значение», поэтому мы обновили код следующим образом.

<?php

    $websiteName = $_POST['website_name'];
    $websiteCategory = $_POST['website_cat'];
    $websiteDetails = $_POST['website_details'];

    try {
        $pdo = new PDO('mysql:host=localhost;dbname=website' , 'root' , '');
        $sql = 'INSERT INTO website_data SET website_name = :website_name , website_cat = :website_cat , website_details = :web_del';

        $stmt = $pdo->prepare($sql);
        $stmt->bindValue(':website_name' ,$websiteName);
        $stmt->bindValue(':website_cat' ,$websiteCategory);
        $stmt->bindValue(':web_del' ,$websiteDetails);
        $stmt->execute();

        echo json_encode(['response' => 'true']);
    } catch (PDOException $e) {
        $msg = $e->getMessage();
        echo json_encode(['response' => $msg]);
    }
?>

, а вот код javascript, который выполняет операцию с ajax

function sendData(websiteName , categoryName , websiteDetails){
    var params = 'website_name='+websiteName+'&website_cat='+categoryName+'&website_details='+websiteDetails;
    var xml = new XMLHttpRequest();
    xml.onreadystatechange = function(){
        if(this.status == 200 && this.readyState == 4){
            var response = this.responseText;
            var responseJson = JSON.parse(response);
            console.log('resonse from server' , responseJson['response']);
            if(responseJson['response'] == 'true'){
                addToCurrent(websiteName , categoryName , websiteDetails);
            }else{
                alert('unfortunatley data could not added succesfully');
            }
        } else{
            console.log('there is some problem with sever');
        }
    }
    xml.open('POST' , '../php/addNewWebsite.php' , true);
    xml.setRequestHeader('Content-type' , 'application/x-www-form-urlencoded');
    xml.send(params);
}

это работает с отступом в localhost good, но оно не работает на нашем бесплатном сервере, оно показывает alert('unfortunatley data could not added succesfully'); я не знаю, почему это происходит. у нас есть бесплатный сервер и домен от awardspace.com

ОБНОВЛЕНИЕ

вот сообщение об ошибке, которое я получаю от server SQLSTATE[HY000] [2002] No such file or directory Спасибо.

1 Ответ

0 голосов
/ 22 марта 2020

Я сталкивался с похожими проблемами в прошлом. Вы должны попробовать изменить localhost на 127.0.0.1, предполагая, что ваш сервер MySQL работает на том же компьютере.

Я считаю, что проблема, с которой вы сталкиваетесь, заключается в том, что "localhost" использует UNIX сокет и не может найти базу данных в стандартном каталоге. Однако «127.0.0.1» использует TCP, что, по сути, означает, что он проходит через «local inte rnet» на машине, будучи намного более надежным, чем сокет UNIX.

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