Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQLi输出问题_Php_Mysql_Mysqli - Fatal编程技术网

PHP MySQLi输出问题

PHP MySQLi输出问题,php,mysql,mysqli,Php,Mysql,Mysqli,我的PHP脚本有一个问题,我想从数据库中输出“name”中的数据,但它不起作用 代码如下: $servername = "localhost"; $username = "root"; $password = ""; $dbname = "myDB"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed

我的PHP脚本有一个问题,我想从数据库中输出“name”中的数据,但它不起作用

代码如下:

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT * FROM products WHERE id = ?");
$stmt->bind_param("s", $_GET['id']);

$stmt->execute();

$result = mysqli_fetch_assoc($stmt);

echo $result['name'];
错误是:

警告:mysqli_fetch_assoc()希望参数1是mysqli_result,对象在第95行的C:\xampp\htdocs\p\cart\index.php中给出

你知道我做错了什么吗?如果能帮上忙,我们将不胜感激

感谢您的建议

使用
bind_result()
.After
$stmt->execute()

$stmt-execute()
返回一个
mysql\u stmt
对象

mysqli\u fetch\u assoc()
需要一个
mysql\u结果
对象作为参数,而不是
mysql\u stmt
对象

因此,要在准备好并执行查询后使用mysqli_fetch_assoc(),您必须使用
$stmt->get_result()
mysql\u stmt
对象转换为
mysql\u结果
对象,如下所示

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT * FROM products WHERE id = ?");
$stmt->bind_param("s", $_GET['id']);

$stmt->execute();

$result = mysqli_fetch_assoc($stmt);    
$row = $result->fetch_assoc();

echo $result['name'];
您还可以使用
$stmt->bind_result($name)
但要做到这一点,我们需要知道查询返回列的顺序。或者您需要使您的查询更加具体

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT name FROM products WHERE id = ?");
$stmt->bind_param("s", $_GET['id']);

$stmt->execute();

$stmt->bind_result($name);
$stmt->fetch();

echo 'Name is ' . $name;

您应该显示错误或查看服务器错误日志。您可以将mysqli设置为抛出异常,也可以在每次mysqli调用后检查错误。我的错误是警告:mysqli_fetch_assoc()希望参数1是mysqli_result,对象在第95行的C:\xampp\htdocs\p\cart\index.php中给出
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("SELECT name FROM products WHERE id = ?");
$stmt->bind_param("s", $_GET['id']);

$stmt->execute();

$stmt->bind_result($name);
$stmt->fetch();

echo 'Name is ' . $name;