一个简单的PHP MYSQLI查询非常奇怪 加载错误
尝试使用一个简单的PHP MYSQLI查询非常奇怪 加载错误,php,mysql,sql,Php,Mysql,Sql,尝试使用$connect->query(“…”而不是$connect->prepare(“…”),在字符串中插入$var时,使用{}或连接以确保安全 帮助此帮助: <?php if (is_array($this->data)): ?> <?php foreach ($this->data as $key => $val): ?> <?php endforeach; ?> <?php else: ?> Error
$connect->query(“…”
而不是$connect->prepare(“…”
),在字符串中插入$var
时,使用{}
或连接以确保安全
帮助此帮助:
<?php if (is_array($this->data)): ?>
<?php foreach ($this->data as $key => $val): ?>
<?php endforeach; ?>
<?php else: ?>
Error on loading
<?php
endif;
global $connect;
# GET DEPOSITS
$user = $_SESSION['username'];
$get_iteme2 = $connect->query("SELECT * FROM users WHERE email = '$user'");
$row = $get_iteme2->fetch_array(MYSQLI_ASSOC);
$u = $row['username'];
$get_ref = $connect->query("SELECT * FROM users WHERE refferal = '$u' ");
$row_depo = $get_ref->num_rows;
$get_itemx = $connect->query("SELECT * FROM users WHERE ref = '$u' AND balance > '0' ");
$row_depx = $get_itemx->num_rows;
$ref_c = $row_depx * 0.01;
?>
<div id="ttt" style="margin:0 auto; width:100%; height:40px; background:#245e76; text-align:center; overflow:hidden; border-radius:4px; margin-top:5px;">
<div id="ttt" style="margin:0 auto; width:94%; height:48px; background:#245e76; text-align:center; overflow:hidden; border-radius:4px; margin-top:0px;">
<p style="font-size:12px; margin-top:10px; font-family:Arial; color:white; ">Affliate Page is now under maintenance</p>
</div></div> </br>
</table>
</div>
</div>
</div>
</div>
检查是否返回一个值
$get_ref = $connect->query("SELECT * FROM users WHERE refferal = '{$u}'");
$row_depo = $get_ref->num_rows;
如果它返回一个值,则检查此返回值
$user = $_SESSION['username'];
如果准备语句,则需要在其产生任何结果之前执行该语句:
$get_ref = $connect->prepare("SELECT * FROM users WHERE refferal = '$u' ");
$row_depo = $get_ref->num_rows;
$get_ref = $connect->prepare("SELECT * FROM users WHERE refferal = ?");
$get_ref->bind_param("s", $u);
$get_ref->execute();
$row_depo = $get_ref->num_rows;
尽管如此,由于没有绑定任何参数,您还是可以直接使用query()
,就像在其他查询中一样:
$get_ref = $connect->prepare("SELECT * FROM users WHERE refferal = '$u' ");
$get_ref->execute();
$row_depo = $get_ref->num_rows;
或者最好是实际使用带有绑定参数的准备语句:
$get_ref = $connect->query("SELECT * FROM users WHERE refferal = '$u' ");
$row_depo = $get_ref->num_rows;
话虽如此,你问题中的以下几行让我觉得还有别的事情发生: 如果我在查询中将变量$u更改为用户名本身,则查询将起作用 这可能意味着上一个查询(从中
$u
获取用户名的查询)没有返回任何结果:
$get_ref = $connect->prepare("SELECT * FROM users WHERE refferal = '$u' ");
$row_depo = $get_ref->num_rows;
$get_ref = $connect->prepare("SELECT * FROM users WHERE refferal = ?");
$get_ref->bind_param("s", $u);
$get_ref->execute();
$row_depo = $get_ref->num_rows;
这是您在查询中使用的$u
。如果$get\u iteme2
查询工作正常,但未返回任何结果,$get\u iteme2->fetch\u array()
将返回NULL
,$row['username']
将不存在(PHP应该给您一个“未定义索引”通知,但根据您的设置,您可能看不到这一点)
如果查询确实正确执行,则必须调试其他情况:
是否包含任何内容,或者是否为空$u
是否包含任何内容,或者是否为空$row
是否包含任何内容?如果是,它是否实际包含用户名而不是电子邮件地址(您将其与$\u会话['username']
列而不是电子邮件
列进行比较,这就是命名属性很重要的原因)用户名
准备()
之后调用$get\u ref->execute()
,这是您的确切代码还是您试图修复它的示例?之所以$row\u depo
不返回行计数,是因为您当时还没有执行我第一次想到的sql语句,但这一行让我觉得还有其他原因:“如果我在查询中将变量$u更改为用户名本身,则查询将起作用“prepare不返回结果集我知道,这就是为什么如果这是他的实际代码。问题是,所有这些代码都经过调试,工作正常。。。但是它似乎没有传递到display,因为num rows显示none,但它有行……如果您回送查询而不是执行它,它是否包含您期望的用户名?如果然后手动执行精确的查询,会得到结果吗?