白页PHP数据插入

时间:2017-10-23 10:37:25

标签: php mysql

我正在寻找Stack Overflow和Google的答案,已经阅读了大约50个相同的问题,每次不同,我的脑袋已经沸腾了。我有一个简单的PHP CRUD应用程序与OOP。

它与数据库有连接(它可以工作,我的数据是从数据库中获取的,我可以在Opera / Safari的index.php中看到它),有'添加'动作(它不起作用 - 白色页面),'编辑'动作(它不起作用 - 白页),'删除'动作(它的工作原理)。

UPDATE2:

我已将cli解释器更改为5.6。现在我看到一些错误(如果我将此行添加到.ini文件'always_populate_raw_post_data'到'-1'错误消失了,但我再次看到一个白页):

Deprecated: Automatically populating $HTTP_RAW_POST_DATA is . 
deprecated and will be removed in a future version. To avoid this 
warning set 'always_populate_raw_post_data' to '-1' in php.ini and 
use the php://input stream instead. in Unknown on line 0

Warning: Cannot modify header information - headers already sent in 
Unknown on line 0
Array ( [type] => 2 [message] => Cannot modify header information - 
headers already sent [file] => Unknown [line] => 0 ) Array ( [type] 
=> 2 [message] => Cannot modify header information - headers already 
sent [file] => Unknown [line] => 0 )

我在我的项目中使用:

  • PHPSTORM

  • PHP CLI解释器7.2

  • PHP 5.6版

add.php代码:

<html>
<head>
<title>Add Data</title>
</head>
<body>
<?php
include_once("classes/Crud.php");
include_once("classes/Validation.php");
$crud = new Crud();
$validation = new Validation();
if(isset($_POST['Submit'])) {   
$name = $crud->escape_string($_POST['name']);
$age = $crud->escape_string($_POST['age']);
$email = $crud->escape_string($_POST['email']); 
$msg = $validation->check_empty($_POST, array('name', 'age', 'email'));
$check_age = $validation->is_age_valid($_POST['age']);
$check_email = $validation->is_email_valid($_POST['email']);
if($msg != null) {
    echo $msg;      
    echo "<br/><a href='javascript:self.history.back();'>Go Back</a>";
} elseif (!$check_age) {
    echo 'Please provide proper age.';
} elseif (!$check_email) {
    echo 'Please provide proper email.';
}   
else { 
    $result = $crud->execute("INSERT INTO users(name,age,email) VALUES('$name','$age','$email')");
    echo "<p style='color=green'>Data added successfully.";
    echo "<br/><a href='index.php'>View Result</a>";
}
}?>
</body>
</html>

edit.php

<?php
include_once("classes/Crud.php");
$crud = new Crud();
$id = $crud->escape_string($_GET['id']);
$result = $crud->getData("SELECT * FROM users WHERE id=$id");
foreach ($result as $res) {
$name = $res['name'];
$age = $res['age'];
$email = $res['email'];
}
?>
<html>
<head>  
<title>Edit Data</title>
</head>
<body>
<a href="index.php">Home</a>
<br/><br/>  
<form name="form1" method="post" action="editaction.php">
    <table border="0">
        <tr> 
            <td>Name</td>
            <td><input type="text" name="name" value="<?php echo 
$name;?>"></td>
        </tr>
        <tr> 
            <td>Age</td>
            <td><input type="text" name="age" value="<?php echo 
$age;?>"></td>
        </tr>
        <tr> 
            <td>Email</td>
            <td><input type="text" name="email" value="<?php echo 
$email;?>"></td>
        </tr>
        <tr>
            <td><input type="hidden" name="id" value=<?php echo 
$_GET['id'];?>></td>
            <td><input type="submit" name="update" value="Update">
</td>
        </tr>
    </table>
</form>
</body>
</html>

editaction.php

<?php
include_once("classes/Crud.php");
include_once("classes/Validation.php");
$crud = new Crud();
$validation = new Validation();
if(isset($_POST['update']))
{   
$id = $crud->escape_string($_POST['id']);   
$name = $crud->escape_string($_POST['name']);
$age = $crud->escape_string($_POST['age']);
$email = $crud->escape_string($_POST['email']); 
$msg = $validation->check_empty($_POST, array('name', 'age', 'email'));
$check_age = $validation->is_age_valid($_POST['age']);
$check_email = $validation->is_email_valid($_POST['email']);
if($msg) {
    echo $msg;      
    echo "<br/><a href='javascript:self.history.back();'>Go 
Back</a>";
} elseif (!$check_age) {
    echo 'Please provide proper age.';
} elseif (!$check_email) {
    echo 'Please provide proper email.';    
} else {    
    $result = $crud->execute("UPDATE users SET 
name='$name',age='$age',email='$email' WHERE id=$id");
    header("Location: index.php");
}
}
?>

DB SCHEME:

create database test;
use test;
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(100) NOT NULL,
`age` int(3) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY  (`id`)
);

Crud.php

<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
include_once 'DbConfig.php';
class Crud extends DbConfig
{
public function __construct()
{
    parent::__construct();
}
public function getData($query)
{       
    $result = $this->connection->query($query); 
    if ($result == false) {
        return false;
    }   
    $rows = array();    
    while ($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }   
    return $rows;
}   
public function execute($query) 
{
    $result = $this->connection->query($query); 
    if ($result == false) {
        echo 'Error: cannot execute the command';
        return false;
    } else {
        return true;
    }       
}
public function delete($id, $table) 
{ 
    $query = "DELETE FROM $table WHERE id = $id";   
    $result = $this->connection->query($query);
    if ($result == false) {
        echo 'Error: cannot delete id ' . $id . ' from table ' . $table;
        return false;
    } else {
        return true;
    }
}
public function escape_string($value)
{
    return $this->connection->real_escape_string($value);
}
}
?>

1 个答案:

答案 0 :(得分:0)

问题在于phpStorm。我的应用程序不能使用在phpStorm中运行的PHP解释器。

我在Apache2 HTTP服务器上运行我的应用程序并且运行良好。