Используйте javascript и php через ajax для выполнения запросов MySQL - PullRequest
3 голосов
/ 28 октября 2009

Я просматривал некоторый код моего проекта и думал обо всех php-страницах, которые я вызываю с помощью ajax, которые просто запускают простое обновление или вставляют запрос, и это заставило меня задуматься. Что, если бы я мог по существу выполнить вставку или обновить SQL-запрос из JavaScript.

при условии, что я использую прототип javascript framework для ajax и php на стороне сервера.

это будет работать?

ЯШ:

<script type="text/javascript">
// table is string containing table name
// fields is an array of field names
// values is an array of values
function mysql_insert(table,fields,values) {
    var sql = "INSERT INTO " + table + "(";
    for(i=0; i<fields.length; i++) {
        sql = sql + "`"+fields[i]+"`";
    }
    sql = sql + ") VALUES (";
    // purposefully used fields array in for loop so we get matching number of values
    for(i=0; i < fields.length; i++) {
        sql = sql + "'"+values[i]+"'";
    }
    sql = sql + ");";

    var par = 'query='+sql;
    var ajax = new Ajax.Request('sql.php',{method:'post',parameters:par,onComplete:function(res) { }});
}
</script>

PHP:

<?php
    include('db.php');  // connect to the mysql server and select database
    mysql_query($_POST['query']);
?>

Очевидно, что это простой пример, просто интересно узнать, сработает ли это, и я мог бы заменить множество небольших php-страниц, каждая из которых выполняет отдельный запрос?

Ответы [ 3 ]

10 голосов
/ 28 октября 2009

Не делай этого!

Это позволит любому делать с вашей базой все, что ему нравится!

Он сможет отправить любую команду sql в вашу базу данных.

0 голосов
/ 28 октября 2009

Гоммей абсолютно прав. Если бы вы могли позволить себе перепроектировать архитектуру вашего приложения, я бы посоветовал вам прочитать Advanced Ajax: архитектура и лучшие практики . В нем обсуждались вопросы безопасности, связанные с ajax, и то, как вы должны проектировать свое приложение для работы с ajax, и более интересным является сценарий на стороне сервера на PHP.

0 голосов
/ 28 октября 2009

Почему бы вам не спрятать оператор SQL в своем PHP? Очень опасно выставлять вашу схему базы данных публично.

Попробуйте передать данные только без имен полей.

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