Php 使用mysqli选择返回null

Php 使用mysqli选择返回null,php,mysqli,Php,Mysqli,我试图使用mysqli从表中选择一行,但我只能得到一堆空值,我真的不知道为什么。同样的查询可以使用普通的php mysql进行,如果我尝试使用我传递的参数在phpMyAdmin上执行同样的查询,结果会很好 代码如下: $con = mysqli_connect('localhost', 'user', 'pass',"db"); if (mysqli_connect_errno()){ die("Failed to connect to MySQL: " . mysqli_connec

我试图使用mysqli从表中选择一行,但我只能得到一堆空值,我真的不知道为什么。同样的查询可以使用普通的php mysql进行,如果我尝试使用我传递的参数在phpMyAdmin上执行同样的查询,结果会很好

代码如下:

$con = mysqli_connect('localhost', 'user', 'pass',"db");

if (mysqli_connect_errno()){
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}
$coupon = $_GET['coupon'];
$sql = mysqli_prepare($con, "SELECT * FROM coupon WHERE coupon=?");
$sql->bind_param('s', $coupon);
$sql->execute();
$sql->store_result();
echo $sql;
返回

"affected_rows":null,
"insert_id":null,
"num_rows":null,
"param_count":null,
"field_count":null,
"errno":null,
"error":null,
"error_list":null,
"sqlstate":null,
"id":null
我已经试着在这里和谷歌上搜索答案,但我找不到任何接近我问题的答案。
我做错了什么?

您必须决定是使用过程方法还是面向对象方法。从代码中,似乎调用了mysqli扩展的过程版本,然后尝试使用对象。请参阅面向对象和过程的示例,并选择单个示例。

您必须确定是使用过程方法还是OOP方法。从代码中,似乎调用了mysqli扩展的过程版本,然后尝试使用对象。请参阅面向对象和过程的示例,并选择单个示例。

您必须确定是使用过程方法还是OOP方法。从代码中,似乎调用了mysqli扩展的过程版本,然后尝试使用对象。请参阅面向对象和过程的示例,并选择单个示例。

您必须确定是使用过程方法还是OOP方法。从代码中,似乎调用了mysqli扩展的过程版本,然后尝试使用对象。请参阅面向对象和过程的示例,并选择一个

作者的最终解决方案(从问题内容移动):

正如user@riggsfully所建议的,我根本没有获取结果,而且我混合了user@Alex所建议的过程和面向对象方法。以下是工作代码,供将来遇到类似问题的任何人参考:

$coupon = $_GET['coupon'];
if ($sql = mysqli_prepare($con, "SELECT * FROM coupon WHERE coupon=?;")){
    mysqli_stmt_bind_param($sql, 's', $coupon);
    mysqli_stmt_execute($sql);
    mysqli_stmt_bind_result($sql, $ID, $coupon, $discount, $uses);
    mysqli_stmt_fetch($sql);
    $data = array(
        'ID' => $ID,
        'coupon' => $coupon,
        'discount' => $discount,
        'uses' => $uses
    );
    echo json_encode($data);
}else{
    echo json_encode(FALSE);
}
作者的最终解决方案(从问题内容移动):

正如user@riggsfully所建议的,我根本没有获取结果,而且我混合了user@Alex所建议的过程和面向对象方法。以下是工作代码,供将来遇到类似问题的任何人参考:

$coupon = $_GET['coupon'];
if ($sql = mysqli_prepare($con, "SELECT * FROM coupon WHERE coupon=?;")){
    mysqli_stmt_bind_param($sql, 's', $coupon);
    mysqli_stmt_execute($sql);
    mysqli_stmt_bind_result($sql, $ID, $coupon, $discount, $uses);
    mysqli_stmt_fetch($sql);
    $data = array(
        'ID' => $ID,
        'coupon' => $coupon,
        'discount' => $discount,
        'uses' => $uses
    );
    echo json_encode($data);
}else{
    echo json_encode(FALSE);
}
作者的最终解决方案(从问题内容移动):

正如user@riggsfully所建议的,我根本没有获取结果,而且我混合了user@Alex所建议的过程和面向对象方法。以下是工作代码,供将来遇到类似问题的任何人参考:

$coupon = $_GET['coupon'];
if ($sql = mysqli_prepare($con, "SELECT * FROM coupon WHERE coupon=?;")){
    mysqli_stmt_bind_param($sql, 's', $coupon);
    mysqli_stmt_execute($sql);
    mysqli_stmt_bind_result($sql, $ID, $coupon, $discount, $uses);
    mysqli_stmt_fetch($sql);
    $data = array(
        'ID' => $ID,
        'coupon' => $coupon,
        'discount' => $discount,
        'uses' => $uses
    );
    echo json_encode($data);
}else{
    echo json_encode(FALSE);
}
作者的最终解决方案(从问题内容移动):

正如user@riggsfully所建议的,我根本没有获取结果,而且我混合了user@Alex所建议的过程和面向对象方法。以下是工作代码,供将来遇到类似问题的任何人参考:

$coupon = $_GET['coupon'];
if ($sql = mysqli_prepare($con, "SELECT * FROM coupon WHERE coupon=?;")){
    mysqli_stmt_bind_param($sql, 's', $coupon);
    mysqli_stmt_execute($sql);
    mysqli_stmt_bind_result($sql, $ID, $coupon, $discount, $uses);
    mysqli_stmt_fetch($sql);
    $data = array(
        'ID' => $ID,
        'coupon' => $coupon,
        'discount' => $discount,
        'uses' => $uses
    );
    echo json_encode($data);
}else{
    echo json_encode(FALSE);
}

mysqli_error()说什么?您需要添加一些错误检查。是否确定
mysqli\u prepare()
返回的是语句而不是false?您是否确保
$\u GET[“优惠券”]
返回的是您所期望的?看在埃文斯的份上。R.T.?.M尝试获取结果<代码>$sql是
准备的结果,而不是结果row@Mike
mysqli\u error()
是空的。@Chris是的,
$\u GET['touction']
mysql\u prepare()
工作正常mysqli\u error()说了什么?您需要添加一些错误检查。是否确定
mysqli\u prepare()
返回的是语句而不是false?您是否确保
$\u GET[“优惠券”]
返回的是您所期望的?看在埃文斯的份上。R.T.?.M尝试获取结果<代码>$sql
准备的结果,而不是结果row@Mike
mysqli\u error()
是空的。@Chris是的,
$\u GET['touction']
mysql\u prepare()
工作正常mysqli\u error()说了什么?您需要添加一些错误检查。是否确定
mysqli\u prepare()
返回的是语句而不是false?您是否确保
$\u GET[“优惠券”]
返回的是您所期望的?看在埃文斯的份上。R.T.?.M尝试获取结果<代码>$sql
准备的结果,而不是结果row@Mike
mysqli\u error()
是空的。@Chris是的,
$\u GET['touction']
mysql\u prepare()
工作正常mysqli\u error()说了什么?您需要添加一些错误检查。是否确定
mysqli\u prepare()
返回的是语句而不是false?您是否确保
$\u GET[“优惠券”]
返回的是您所期望的?看在埃文斯的份上。R.T.?.M尝试获取结果<代码>$sql
准备的结果,而不是结果row@Mike
mysqli\u错误()
work fine这不是一个真正的答案-更多的是评论。这不是一个真正的答案-更多的是评论。这不是一个真正的答案-更多的是评论。这不是一个真正的答案-更多的是评论。