Php mysql_query()希望参数1是字符串,即使用类和函数时给定的资源
我有三个文件,从技术上讲是两个,因为其中一个是init文件,只包含 我在index.php中的第一个文件,它使用SQL类:Php mysql_query()希望参数1是字符串,即使用类和函数时给定的资源,php,mysql,function,class,Php,Mysql,Function,Class,我有三个文件,从技术上讲是两个,因为其中一个是init文件,只包含 我在index.php中的第一个文件,它使用SQL类: <?php define("WEB_URL", dirname(__FILE__ ) . "/"); include(WEB_URL . 'init.php'); $sql->openConnection('localhost', 'root', ''); $sql->selectDatabase("website"); $query = $sql-&
<?php
define("WEB_URL", dirname(__FILE__ ) . "/");
include(WEB_URL . 'init.php');
$sql->openConnection('localhost', 'root', '');
$sql->selectDatabase("website");
$query = $sql->query("SELECT * FROM users");
$result = $sql->fetch_array($query);
echo $result['user_name'];
$sql->closeConnection();
?>
到目前为止,SQL函数相当简单,但我不太确定我做错了什么。我已经把问题读了一遍,但似乎没有一个有效
<?php
class SQL {
private $_connection;
/*
* openConnection
*
* @param String username, String password, String host
* @return Boolean true
*/
function openConnection($host, $username, $password)
{
$this->_connection = mysql_connect($host, $username, $password);
if(!$this->_connection) {
exit('Unable to connect to database');
}
}
/*
* closeConnection
*/
function closeConnection()
{
mysql_close($this->_connection);
}
/*
* selectDatabase
*
* @param String database name
* @return Boolean true
*/
function selectDatabase($database_name)
{
mysql_selectdb($database_name, $this->_connection);
}
/*
* query
*
* @param String query
* @return Boolean results
*/
public function query($query)
{
$q = mysql_query($this->_connection, $query) or die(mysql_error());
return $q;
}
/*
* query
*
* @param SQL results
* @return Array array
*/
function fetch_array($results)
{
return mysql_fetch_array($results);
}
}
?>
而不是:
$q = mysql_query($this->_connection, $query) or die(mysql_error());
这样做:
$q = mysql_query( $query,$this->_connection) or die(mysql_error());
查看更多详细信息
mysql\u query()
首先是SQL字符串,然后是(可选)连接。您不应该包装mysql\u*()函数。它们已经过时了,不推荐使用。mysqli库已经有了一个面向对象的接口,所以你基本上是在泰坦尼克号上重新安排躺椅。哦,但是我更喜欢这种方式,尽管它违反了规则。这周围还有什么吗?安德鲁,我不太明白你的意思。@ExtremeEngineering-在你调用mysql\u查询时,交换参数,就像FaceOfJock的回答一样。如果您使用的是mysql_查询,那么不必提供数据库连接;如果不这样做,默认情况下,它将使用最近打开的连接。