Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本在本地主机上读取和写入,但仅在服务器上读取_Php_Mysql_Pdo - Fatal编程技术网

PHP脚本在本地主机上读取和写入,但仅在服务器上读取

PHP脚本在本地主机上读取和写入,但仅在服务器上读取,php,mysql,pdo,Php,Mysql,Pdo,我正在编写一个简单的脚本,用于在数据库中创建新行、读取和更新这些行/条目。我正在连接到rackspace托管的数据库。当我在本地主机服务器(wamp)上运行脚本时,我可以读取、写入和更新数据库。但当我在服务器上运行它时(完全相同的脚本),它从数据库中读取数据,但不会写入或更新数据库。我已经联系了Rackspace,他们没有帮助。。。这是我的剧本。有什么建议吗 <?php include_once('sanitize.php'); //sanitize.php used to ster

我正在编写一个简单的脚本,用于在数据库中创建新行、读取和更新这些行/条目。我正在连接到rackspace托管的数据库。当我在本地主机服务器(wamp)上运行脚本时,我可以读取、写入和更新数据库。但当我在服务器上运行它时(完全相同的脚本),它从数据库中读取数据,但不会写入或更新数据库。我已经联系了Rackspace,他们没有帮助。。。这是我的剧本。有什么建议吗

<?php

include_once('sanitize.php');   //sanitize.php used to sterilize inputs

/************************************************************************************/
/********************************* DATABASE CLASS ***********************************/
/************************************************************************************/

$hostname = 'xxx';
$database = 'xxx';
$username = 'xxx';
$password = 'xxx';

try {$DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);}
catch(PDOException $e) { echo $e->getMessage();}

/************************************************************************************/
/********************************* MAIN FUNCTIONS ***********************************/
/************************************************************************************/

function list_active_orders() {
    global $DBH;

    $STH = $DBH -> prepare("SELECT * FROM orders ORDER BY id DESC");
    $STH -> execute();
    $dataSet = $STH -> fetchAll();

    echo "<table class='activeOrders'>
            <tr>
                <th>DocNum</th>
                <th>Customer</th>
                <th>Rep</th>
                <th>Product</th>
                <th>Ordered</th>
                <th>Shipped</th>
                <th>Received</th>
                <th>Delieverd</th>
            </tr>";
    foreach ($dataSet as $data) {
        if(!$data['Ordered']) {
            $Ordered = "<input type='checkbox' name='Ordered' value='Ordered' class='orderedCheckbox'>";
        }
        else {
            $Ordered = $data['Ordered'];
        }
        if(!$data['Shipped']) {
            $Shipped = "<input type='checkbox' name='Shipped' value='Shipped' class='shippedCheckbox'>";
        }
        else {
            $Shipped = $data['Shipped'];
        }
        if(!$data['Received']) {
            $Received = "<input type='checkbox' name='Received' value='Received' class='receivedCheckbox'>";
        }
        else {
            $Received = $data['Received'];
        }
        if(!$data['Delivered']) {
            $Delivered = "<input type='checkbox' name='Delivered' value='Delivered' class='deliveredCheckbox'>";
        }
        else {
            $Delivered = $data['Delivered'];
        }
        echo "<tr id='".$data['id']."'>";
        echo "<td>".$data['DocNum']."</td>";
        echo "<td>".$data['Customer']."</td>";
        echo "<td>".$data['Rep']."</td>";
        echo "<td>".$data['Product']."</td>";
        echo "<td>".$Ordered."</td>";
        echo "<td>".$Shipped."</td>";
        echo "<td>".$Received."</td>";
        echo "<td>".$Delivered."</td>";
        echo "</tr>";
    }
    echo "</table>";
}

function new_order($DocNum, $Customer, $Rep, $Product) {
    global $DBH;
    $STH = $DBH -> prepare("INSERT INTO orders (DocNum, Customer, Rep, Product) VALUES (:DocNum, :Customer, :Rep, :Product)");
    $STH -> bindValue(':DocNum', $DocNum, PDO::PARAM_STR);
    $STH -> bindValue(':Customer', $Customer, PDO::PARAM_STR);
    $STH -> bindValue(':Rep', $Rep, PDO::PARAM_STR);
    $STH -> bindValue(':Product', $Product, PDO::PARAM_STR);
    $STH -> execute();
}

function update_order($column, $date, $id) {
    global $DBH;
    switch ($column) {
        case 'Ordered':
            $STH = $DBH -> prepare("UPDATE orders SET Ordered = :d WHERE id = :id");
            break;

        case 'Shipped':
            $STH = $DBH -> prepare("UPDATE orders SET Shipped = :d WHERE id = :id");
            break;

        case 'Received':
            $STH = $DBH -> prepare("UPDATE orders SET Received = :d WHERE id = :id");
            break;

        case 'Delivered':
            $STH = $DBH -> prepare("UPDATE orders SET Delivered = :d WHERE id = :id");
            break;

        default:
            # code...
            break;
    }

    $STH -> bindValue(':d', $date, PDO::PARAM_STR);
    $STH -> bindValue(':id', $id, PDO::PARAM_INT);
    $STH -> execute();
}




/************************************************************************************/
/********************************** CONTROL LOOP ************************************/
/************************************************************************************/

$action         = sanitize(@$_POST['action']);
$DocNum         = sanitize(@$_POST['DocNum']);
$Customer       = sanitize(@$_POST['Customer']);
$Rep            = sanitize(@$_POST['Rep']);
$Product        = sanitize(@$_POST['Product']);
$column         = sanitize(@$_POST['column']);
$date           = sanitize(@$_POST['d']);
$id             = sanitize(@$_POST['id']);


switch ($action) {
    case 'view_orders':
        list_active_orders();
        break;
    case 'new_order':
        new_order($DocNum, $Customer, $Rep, $Product);
        break;
    case 'Update_Order':
        update_order($column, $date, $id);
        break;

    default:
        break;
}

?>

我的问题是为什么会发生这种错误

答案是您试图混合使用两个库,
PDO
mysql.*

除此之外,
mysql.*
已被弃用,但我相信您已经知道了这一点

我不能给你内在的原因,但这样做是个坏主意


如果您使用的是PDO,并且您正确地准备了查询,那么您就不必担心逃出虚名。

感谢您提供的mysql主机/user/pass/db名称。。。最好现在就去换。另外,mysql帐户创建为user@host成对(其中一个允许使用通配符)。根据您的本地和远程地址,您可能有两个完全不同的mysql帐户,并且您正在连接到一个只允许读取的帐户。他们的唯一用户和通过测试数据库没有有效数据,但感谢您将其xxxing出来。如果两个(服务器和本地)脚本都显示相同的数据,并且当我从本地脚本更新数据库时,服务器脚本显示更改,那么如何连接到两个不同的数据库?我很确定,使用相同的连接无法做到这一点。您必须为另一个连接创建一个新的
PDO
类,然后对其执行完全相同的操作:)因为mysql使用连接的源IP加上用户名来创建用户帐户。user@127.0.0.1是一个完全不同的帐户user@127.0.0.2,即使他们都是“用户”。每个人都可以有自己的补助金。如果您是以
user@%
的身份授予的,那么它将是通配符,不重要。但是如果不使用通配符,那么这两个帐户可能有不同的授权。@Andreastorvikstrauman-在这里询问stackoverflow如何只声明我的凭据一次之后,我以前用其他脚本也这样做过。
[28-Apr-2014 15:54:43 America/Chicago] PHP Warning:  mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: A link to the server could not be established in /mnt/target03/354651/orders.entrerock.com/web/content/sanitize.php on line 26
<?php
function cleanInput($input) {

  $search = array(
    '@<script[^>]*?>.*?</script>@si',   // Strip out javascript
    '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
    '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
    '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments
  );

    $output = preg_replace($search, '', $input);
    return $output;
}

function sanitize($input) {
    if (is_array($input)) {
        foreach($input as $var=>$val) {
            $output[$var] = sanitize($val);
        }
    }
    else {
        if (get_magic_quotes_gpc()) {
            $input = stripslashes($input);
        }
        $input  = cleanInput($input);
        $output = mysql_real_escape_string($input);
    }
    return $output;
}
?>