使用$ _GET方法不会在数据库中存储正确的值

时间:2015-01-14 06:36:08

标签: php mysqli webmatrix

我一直在尝试使用PHP5为我的网站构建评论部分,但是当我尝试使用$ _GET方法时,它会在数据库列中存储错误的值。最初我只使用了$ _GET [&# 39; pageid']但这会存储NULL而不是整数,这是因为$ _GET [' pageid']有一个字符串数据类型。

然后我开始使用(int)$ _ GET [' pageid']这将存储一个整数但错误的值。它每次都会存储0。我知道其他人遇到了和我一样的问题,但我找不到可行的解决方案。

我能够从我的数据库中检索注释,并在pageID列中手动插入整数后,使用$ _GET [' pageid']将注释发布到各自的页面。

如果它有任何区别我正在使用带有MySQLi和PHP5的Webmatrix 3。提前谢谢!

    if (isset($_POST['submit']))
    {
        $pageid = (int)$_GET['pageid'];
        $username = $_SESSION['username'];
        $comment = $_POST['comment'];
        $query = "INSERT INTO comments (pageID, username, comment) VALUES (?, ?, ?)";

        $statement = $databaseConnection->prepare($query);
        $statement->bind_param('iss', $pageid, $username, $comment);
        $statement->execute();
        $statement->store_result();

        if ($statement->error)
        {
            die('Database query failed: ' . $statement->error);
        }

        $creationWasSuccessful = $statement->affected_rows == 1 ? true : false;
        if ($creationWasSuccessful)
        {   
            header ("Location: index.php");
        }
    }

1 个答案:

答案 0 :(得分:0)

如果你将一个字符串CAST为整数,它将变为0,如果该字符串在开头有数字,那么只有那些数字将被转换为整数,如果一个字符串以空格Ex: - " 12word" ,结果将是12。

检查这些例子

$str = 'Hello World 12';
$int = (int)$str;   
echo $int; // 0


$str = 'Hello World';
$int = (int)$str;   
echo $int; // 0


$str = 'Hello 12 World';
$int = (int)$str;   
echo $int; // 12  

$str = '12Hello World';
$int = (int)$str;    
echo $int; // 12

点击此链接可获得更多提示。 http://www.phpf1.com/tutorial/php-string-to-int.html