Php MySQLi MySQLi fech阵列关联更换无效

Php MySQLi MySQLi fech阵列关联更换无效,php,mysql,mysqli,procedure,statements,Php,Mysql,Mysqli,Procedure,Statements,这是我想要的,但不能让它与新的MySQLi一起工作,因为我的主机没有所有新的php等等 但必须有某种解决方案,否则MYSQLI只能这么做 请不要谈论PDO,因为即使是这个丑陋的名字听起来也像PEDO,我只对MySQLI和这个简单问题的解决方案感兴趣。请不要改变我剧本的结构。问题是,是否有什么东西可以让它与MySQL一起工作,或者我是否可以切换回MySQL过程而不是语句 <?php $sql = new mysqli('localhost','user','pass','db

这是我想要的,但不能让它与新的MySQLi一起工作,因为我的主机没有所有新的php等等

但必须有某种解决方案,否则MYSQLI只能这么做

请不要谈论PDO,因为即使是这个丑陋的名字听起来也像PEDO,我只对MySQLI和这个简单问题的解决方案感兴趣。请不要改变我剧本的结构。问题是,是否有什么东西可以让它与MySQL一起工作,或者我是否可以切换回MySQL过程而不是语句

    <?php
    $sql = new mysqli('localhost','user','pass','db'); 
    $who  = $_GET['user'];
    $query = $sql->prepare("SELECT * FROM profiles WHERE user=?");
    $query->bind_param("s",$who);
    $result = $query->execute();
    while($row = $result->fetch_array(MYSQLI_ASSOC)) // << HERE IS THE PROBLEM //

// I GET ERROR Fatal error: Call to a member function fetch_array() on a non-object in ... // 

标题
自定义HTML的一个很好的设计,我想保持相同的设计布局等。。。
你好
你的信息是
注释此字符串:

$result = $query->get_result();
你不需要这个。

试试这个

<?php
$sql = new mysqli('localhost', 'user', 'pass', 'db');
$who = $_GET['user'];
$query = $sql->prepare("SELECT * FROM profiles WHERE user=?");
$query->bind_param("s", $who);
$result = $query->execute() or die($query->error);
while ($row = $result->fetch_array()) {
    $username = $row[USERNAME];
    $info = $row[JUST_SOME_INFO];
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>title</title>
</head>

<body>
    CUSTOM HTML FOR A NICE DESIGN I WANT TO KEEP THE SAME DESIGN LAYOUT ETC...

    HELLO <?php echo $username; ?> 
    YOUR INFO IS <?php echo $info; ?> 


</body>
</html>

标题
自定义HTML的一个很好的设计,我想保持相同的设计布局等。。。
你好
你的信息是

这就是当您在不知道php的含义的情况下开始复制和粘贴php时发生的情况

这里的解决方案是:

$sql
创建一个类,或者在调用变量后立即将$sql声明为全局

试一试

global$sql

但是如果您确实想解决问题(通过将
$sql
变量设置为对象)

试一试

现在,当你想对数据库连接做些什么的时候

$db->action();
这只是基础,可能不会起作用。在尝试编写自己的类之前,您可能应该阅读更多关于php/mysqli的内容。

这是您的解决方案

您不必使用
fetch\u array()
而是使用
fetch()

此外,您还必须在
fetch
之前使用
bind\u result
绑定结果

$query->execute();

$query->bind_result($col1);

while($row = $query->fetch()){
     printf("%s \n", $col1);
}
您也可以直接使用
$col1
,无需与
printf()一起使用

如果您需要更多帮助,下面给出了我的db工作示例

$sql = new mysqli('localhost','user','pass','dbname');

$who  = 'php';

$query = $sql->prepare("SELECT * FROM job WHERE skill=?");

$query->bind_param("s",$who);


$query->execute();

$query->bind_result($col1);

while($row = $query->fetch()){
     printf("%s \n", $col1);
}

不要谈论PDO,因为即使是丑陋的名字听起来也像PEDO
你赢得了interwebzhahaha真的,名字听起来不太好。编辑了它,现在我得到了以下错误致命错误:首先在选中您的
$result
中对非对象调用成员函数fetch_array()。我认为,查询的结果是一个空值(NULL)。可能您的数据库中没有包含此
$who
的记录。按您的方式编辑此记录,并出现致命错误:对非对象调用成员函数fetch_array()。我认为您应该初始化另一个保存从数据库检索数据的变量。虽然($row=$result->fetch_array()){$username=$row['username'];$info=$row['JUST_SOME_info'];}但过程代码完全没有问题。我在大多数情况下都使用它。几乎正常或不同的结果是警告:mysqli_stmt::bind_result()[mysqli stmt.bind result]:bind变量的数量与使用$query->bind_result($col1,$col2,$col3,…)时准备语句中的字段数量不匹配。同样,如果表有3行,请在bind_result中使用3个变量。
$query->execute();

$query->bind_result($col1);

while($row = $query->fetch()){
     printf("%s \n", $col1);
}
$sql = new mysqli('localhost','user','pass','dbname');

$who  = 'php';

$query = $sql->prepare("SELECT * FROM job WHERE skill=?");

$query->bind_param("s",$who);


$query->execute();

$query->bind_result($col1);

while($row = $query->fetch()){
     printf("%s \n", $col1);
}