这是我想要的但是不能让它与新的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
}
?>
答案 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上阅读更多内容。