【问题标题】:MySQLi not workingMySQLi 不工作
【发布时间】:2014-10-19 17:04:11
【问题描述】:

我知道这个问题很常见,但我在这个问题上浪费了很多时间,但它仍然不起作用。我们正在尝试插入一行,但它不起作用。

这是代码:

<?php
    class DAL{
        private $srvname='localhost';
        private $username='i110546';
        private $password='2349058';
        private $bdname='i110546';

        function insert_log($url){

            $conn = new mysqli($srvname, $username, $password, $bdname);
            if (mysqli_connect_errno()) {
                printf("Conexao falhada: %s\n", mysqli_connect_error());
                                return NULL;
            }

                        $query = "INSERT INTO `log` (`url`) VALUES (?)";
                        $test = $conn->prepare($query);
                        $test->bind_param('ss',$url);
                        $test->execute();
                        $test->close();
                        $conn->close();
                }
    }
?>

有人知道怎么回事吗?

【问题讨论】:

    标签: php mysqli insert


    【解决方案1】:
    $test->bind_param('ss',$url);
    

    你绑定了两个两个字符串(ss)但只提供一个,而你的语句只包含一个占位符,我猜你想要的行是

    $test->bind_param('s',$url);
    

    另外,您以错误的方式处理您的属性,它们需要在方法(函数)中使用 $this->variable_name 来解决,因此将您的行修改为 this

    $conn = new mysqli($this->srvname, $this->username, $this->password, $this->bdname);
    

    【讨论】:

    • 还是不行。 500 内部服务器错误,除此之外我似乎没有发现任何错误。
    • 您是否在抑制错误?如果是这样,则显示它们。您可能正在抑制无法显示的致命错误,因此您会收到 500 内部服务器错误。
    • 我不会这样做,因为我一开始就不知道该怎么做。
    • 将这两行放在页面顶部,运行看看有没有错误error_reporting(-1); ini_set('display_errors', 'On');
    • 它说 $srvanme, $username, bla bla 未定义。
    【解决方案2】:

    您只有一个参数,但在您的绑定调用中,您有 2 个字符串参数ss

    应该是一个:

    $test->bind_param('s',$url);
    

    并检查错误。

    【讨论】:

    • 还是不行。 500 内部服务器错误,除此之外我似乎没有发现任何错误。
    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2012-01-25
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多