MySQLi mysqli获取数组关联替换不工作

时间:2014-01-13 06:11:06

标签: php mysql mysqli procedure statements

这是我想要的但是不能让它与新的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 ... // 

“”但必须有一些方法让它像我们一样工作while($ row = mysqli_fetch_array($ sql))//

    {
    ?>


    <!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 "$row[USERNAME]"; ?> 
        YOUR INFO IS <?php echo "$row[JUST_SOME_INFO]"; ?> 


    </body>
    </html>
    <?php
    }
    ?>

4 个答案:

答案 0 :(得分:1)

这是您的解决方案

您不必使用fetch_array(),而是使用fetch()

您还必须在bind_result

之前使用fetch绑定结果
$query->execute();

$query->bind_result($col1);

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

您也可以直接使用$col1,无需将其与printf()

一起使用

如果您需要更多帮助,请根据我的数据库给出我的工作示例

$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);
}

答案 1 :(得分:0)

评论此字符串:

$result = $query->get_result();

你不需要这个。

答案 2 :(得分:0)

试试这个。

<?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>

答案 3 :(得分:0)

当您开始复制并粘贴php而不知道它意味着什么时,会发生这种情况。

这里的解决方案是:

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

尝试

global $sql;

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

$sql = array();
$sql['host'] = 'host';
$sql['user'] = 'user';
$sql['pass'] = 'password';
$sql['db'] = 'database';
global $sql;
$db = new mysqli($sql);

现在,当你想要使用数据库连接时。

$db->action();

这只是基础知识,可能不起作用。在尝试编写自己的类之前,你可能应该在php / mysqli上阅读更多内容。