为什么我的php代码不会将其数据发送到我创建的数据库?

时间:2013-06-20 18:28:23

标签: php mysqli

我是php的新手,我在这个网站上看到了一个有同样问题的人的问题,但问题的答案对我的情况没有帮助。我无法使用我的php代码将记录插入到我的数据库中。

这是我的代码,我跟随了Jason Lengstorf的一本名为“PHP For Absolute Begginers”的教科书。如果需要,我可以在评论中附加其余代码,您也可以在源代码下找到此网站上的代码http://www.apress.com/9781430224730。我的问题在哪里以及我应该更新数据库的地方从第66行开始,我注释掉了,以便在else语句旁边显示:

<?php

// Include the functions so we can create a URL
include_once 'functions.inc.php';
include_once 'images.inc.php';

//$e = array();

if($_SERVER['REQUEST_METHOD']=='POST' && $_POST['submit']=='Save Entry'
&& !empty($_POST['page']) && !empty($_POST['title']) && !empty($_POST['entry']))                     
{
// Create a URL to save in the database
$url = makeUrl($_POST['title']);

if(isset($_FILES['image']['tmp_name']))    //line 16
{
    try 
    {
        $img = new ImageHandler("/simple_blog/images/");//not in the textbook
        //print_r($_FILES);
        //exit;
        $img_path = $img->processUploadedImage($_FILES['image']);
        echo '<img src="', $img_path,'" /><br />';//This prints out the image
    }
    catch(Exception $e)
    {
        die($e->getMessage());
    }
}
else
{
    $img_path = NULL;
}

// Include database credentials and connect to the database
include_once 'db.inc.php';
$db = new PDO(DB_INFO, DB_USER, DB_PASS);

echo "Image Path: ", $img_path, "<br />";
//exit; in the book but not on the source

// Edit an existing entry
if(!empty($_POST['id']))
{
    $sql = "UPDATE entries
            SET title=?, entry=?, url=?
            WHERE id=?
            LIMIT 1";
    $stmt = $db->prepare($sql);
    $stmt->execute(
        array(
            $_POST['title'],
            $img_path,
            $_POST['entry'],
            $url,
            $_POST['id']
        )
    );
    $stmt->closeCursor();
}

// Create a new entry
else               //line 66 problems with the code dont work until after this line
{
    //Save the entry into the database

    echo"please work this time";
    $con = mysqli_connect("localhost","root","","simple_blog");

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $page = $_POST['page'];
    //var_dump($page);
    $page = mysql_real_escape_string($page);
    $title = $_POST['title'];
    //var_dump($title);
    $title = mysql_real_escape_string($title);
    $entry = $_POST['entry'];
    //var_dump($entry);
    $entry = mysql_real_escape_string($entry);

    $sql = "INSERT INTO entries(page, title, image, entry, url) 
    VALUES ('$page', '$title', '$img_path', '$entry', '$url')";

    mysqli_query($con, $sql);

    mysqli_close($con);
}

// Sanitize the page information for use in the success URL
$page = htmlentities(strip_tags($_POST['page']));

// Send the user to the new entry
echo "hopefully we get here";
header('Location: /simple_blog/'.$page.'/'.$url);
exit;
}

else
{
    header('Location: ../');
    exit;
}

?>

任何能告诉我为什么我的代码不会发布到数据库的人我很感激帮助,谢谢你。

1 个答案:

答案 0 :(得分:1)

您正在混合和匹配 3 不同的数据库库。它们中的NOne彼此兼容。一个的结果不能在另一个中使用,因此以下是平坦的操作错误:

$page = mysql_real_escape_string($page);
             ^---note the LACK of an i

mysqli_query($con, $sql);
     ^---note the PRESENCE of an i

所有的数据库代码都是盲目地假设成功和失误,在第一次失败后留下了混乱和破坏的痕迹。如果你有甚至MINIMAL错误处理,你会看到错误:

同样,不推荐使用mysql(不带i),不应再使用它。你开始使用PDO,所以坚持使用PDO。不要混用db库。