类mysqli的对象无法转换为字符串js php
我在overflow上看到关于这个问题的问题,但我找不到决定。 这是我代码的最后一个变体。 抱歉,我在php中使用了0:(类mysqli的对象无法转换为字符串js php,php,jquery,mysql,Php,Jquery,Mysql,我在overflow上看到关于这个问题的问题,但我找不到决定。 这是我代码的最后一个变体。 抱歉,我在php中使用了0:( 在循环之前,您需要运行查询并获得结果- $sql = ( "SELECT * FROM $tableName"); $result = mysqli_query($con, $sql); // remove quotes from variables, only query once $data = array(); while ( $row = mysqli_fetc
在循环之前,您需要运行查询并获得结果-
$sql = ( "SELECT * FROM $tableName");
$result = mysqli_query($con, $sql); // remove quotes from variables, only query once
$data = array();
while ( $row = mysqli_fetch_row($result) )....// loop through results
您可以对代码进行更多的改进。您假设查询将始终有效,您不应该这样做。您假设您将始终连接到数据库,您不应该这样做。您混合了数据库方法,您不应该这样做(mysql_u与mysqli_uu)正如上面的评论员提到的,您的具体错误是因为这一行而来的:
$row = mysql_fetch_row(mysqli_query("$con", "$sql"))
如果您查看它提到的特定错误,您正在尝试将MySQLi对象转换为字符串。MySQLi_query希望您传入一个字符串、一个MySQLi连接和一个查询()。当传入“$con”时,您正在尝试将$con对象(一个MySQLi类)转换为一个字符串,这是错误的
关于代码的其余部分,上面和注释中还提到了其他问题,但这将修复您遇到的特定错误
mysqli_query($con, "$sql")
虽然您也不需要在$sql周围加引号,因为它已经是一个字符串了
<?php
$host = "*****";
$user = "*****";
$pass = "******";
$databaseName = "******";
$tableName = "product";
$con = mysqli_connect($host,$user,$pass);
$dbs = mysqli_select_db($con, $databaseName);
$sql = ( "SELECT * FROM $tableName");
$data = array();
$dataquery= mysqli_query($con, $sql);
while ( $row = $dataquery->fetch_array() )
{
$data[] = $row;
}
echo json_encode( $data );
mysqli_close($con);
?>
在下面的评论中可以看到这些变化
$con = mysqli_connect($host,$user,$pass,$databaseName ); //add the database name
//$dbs = mysqli_select_db($con, $databaseName); //you can remove this then
$sql = ( "SELECT * FROM $tableName");
try //add a try catch to handle error
{
$result = mysqli_query($con,$sql); //add result variable
if($result) //check if result was successful
{
while($row = mysqli_fetch_array($result)) //use mysqli_fetch_array instead
{
$data[] = $row;
}
}
else
{
throw new Exception('Unable to get data:'.mysqli_error($con)); //error message
}
}
catch(Exception $e)
{
echo $e->getMessage(); //print out error
}
mysqli_free_result( $result ); //free the resources after used
mysqli_close($con);
echo json_encode( $data );
您正在混合使用mysqli和mysql。为了使调试更容易,您根本不做任何错误处理。在每行代码中塞进尽可能多的内容,您不会得到任何额外的分数。我强烈建议您打破这一顺序,并在查询过程中的每一步提供适当的错误处理。若要添加到@MikeBrant,请不要ur$con和$sql在引号中。
<?php
$host = "*****";
$user = "*****";
$pass = "******";
$databaseName = "******";
$tableName = "product";
$con = mysqli_connect($host,$user,$pass);
$dbs = mysqli_select_db($con, $databaseName);
$sql = ( "SELECT * FROM $tableName");
$data = array();
$dataquery= mysqli_query($con, $sql);
while ( $row = $dataquery->fetch_array() )
{
$data[] = $row;
}
echo json_encode( $data );
mysqli_close($con);
?>
$con = mysqli_connect($host,$user,$pass,$databaseName ); //add the database name
//$dbs = mysqli_select_db($con, $databaseName); //you can remove this then
$sql = ( "SELECT * FROM $tableName");
try //add a try catch to handle error
{
$result = mysqli_query($con,$sql); //add result variable
if($result) //check if result was successful
{
while($row = mysqli_fetch_array($result)) //use mysqli_fetch_array instead
{
$data[] = $row;
}
}
else
{
throw new Exception('Unable to get data:'.mysqli_error($con)); //error message
}
}
catch(Exception $e)
{
echo $e->getMessage(); //print out error
}
mysqli_free_result( $result ); //free the resources after used
mysqli_close($con);
echo json_encode( $data );