Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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 Wordpress中的Mysqli查询_Php_Wordpress_Function_Mysqli - Fatal编程技术网

Php Wordpress中的Mysqli查询

Php Wordpress中的Mysqli查询,php,wordpress,function,mysqli,Php,Wordpress,Function,Mysqli,不知道你能不能帮我解决这个问题。WordPress 3.92中的最新PHP。WordPress正在使用MySqli。我正在尝试将我的自定义MYSQL更改为MYSQLI,这应该足够简单,但会引发很多问题 下面是两个例子。示例1在函数中使用WordPress内置的MYSQLI连接,下面的是我自己的连接。第一个会抛出错误,如图所示,但我自己的一个不会 function name{ global $wpdb; $options = array(); $res=mysqli_query($wpdb,"se

不知道你能不能帮我解决这个问题。WordPress 3.92中的最新PHP。WordPress正在使用MySqli。我正在尝试将我的自定义MYSQL更改为MYSQLI,这应该足够简单,但会引发很多问题

下面是两个例子。示例1在函数中使用WordPress内置的MYSQLI连接,下面的是我自己的连接。第一个会抛出错误,如图所示,但我自己的一个不会

function name{
global $wpdb;
$options = array();
$res=mysqli_query($wpdb,"select ID,County from counties ORDER BY County ASC");
$value="";
$label="Please select a county";
$options[] = array('label' => $label, 'value' => $value);
    while($row=mysqli_fetch_array($res)) {
    $sC=$row['ID'];
    $res1=mysqli_query($wpdb,"select County from wedding_shows where County='$sC'");
        if (mysqli_num_rows($res1) == 0) {
        } else {
        $options[] = array('label' => $row['County'], 'value' => $row['ID']);
        }
    }
}
以下是我得到的错误

警告:mysqli_query()期望参数1是mysqli,第3行的eval()代码中给定的对象

警告:mysqli_fetch_array()要求参数1为mysqli_result,第4行的eval()代码为null

这是我自己的连接,没有错误

function name(
$dbhost1 = 'localhost';
$dbuser1 = 'user';
$dbpass1 = 'pass';
$dbname1 = 'DBName';
$conn=mysqli_connect("localhost","$dbuser1","$dbpass1","$dbname1");
$options = array();
$res=mysqli_query($conn,"select ID,County from counties ORDER BY County ASC");
$value="";
$label="Please select a county";
$options[] = array('label' => $label, 'value' => $value);
    while($row=mysqli_fetch_array($res)) {
    $sC=$row['ID'];
    $res1=mysqli_query($conn,"select County from wedding_shows where County='$sC'");
        if (mysqli_num_rows($res1) == 0) {
        } else {
        $options[] = array('label' => $row['County'], 'value' => $row['ID']);
        }
             }
}
我必须努力寻找,因为我不明白为什么这在第一个实例中不起作用,以避免在每个函数中创建新的连接

非常感谢
P

mysqli_query的第一个参数应该是连接字符串

$wpdb
不是连接字符串,而是wordpress数据库对象。也就是说,您只需执行
$wpdb->get_results(“按县ASC从县顺序选择ID,县”)相反,如果查询是正确的。

为什么要使用mysqli?既然您可以访问$wpdb()函数并让wordpress负责驱动程序的实现,为什么不简单地使用它呢?@adam-wpdb返回一个基本类型…不像本机mysql/mysqli安装程序返回的标准结果集那样健壮和完整。我永远不会去看这些cms/框架等希望开发人员使用的临时修复程序……它们在可伸缩性、复杂问题、版本问题和健壮性方面都很糟糕。我敦促所有开发人员远离这些“无理论”工具。在真实的软件开发中,这很可怕。请注意,get_results,甚至wpdb->query都会将整个结果提取到数组中。处理大型自定义数据库时未使用的内容。@可怕的分号完全不正确。使用索引时,数据库的大小并不重要。查询参数很重要(意思是说没有用而不是用过)。这是完全正确的。我没说问题不重要。只是wordpress在数组中获取结果,这与mysqli_查询的行为不同。查看wpdb->查询方法代码。因此,如果要在大型数据库上执行循环,可以说要将大型表转换为另一种类型。从mygigatable中选择*。wordpress将尝试将其全部放在一个大数组中,从而导致内存不足错误。源代码行:1889-1890 wordpress 5.0.3“while($row=mysqli_fetch_object($this->result)){$this->last_result[$num_rows]=$row;”