我遇到了一个mysqli连接的问题,似乎在第一个障碍下降了。在继续之前,我测试了连接并且它正常工作,查询是正确的但是mysql_fetch_assoc和mysql_fetch_array中的值的var_dump为空。
代码检查是否存在具有该值的行,如果它存在则停止,如果不存在,则从数据库中提取值。这似乎在拉动价值方面做得很好。
以下是代码:
db = new database('localhost', 'username', 'password', 'my_db');
$db->query("SELECT * FROM `codes` WHERE `code` = '$ccode'");
if ($db->numRows() == 0)
{
echo "No value was found";
}
else
{
foreach($db->rows() as $email)
{
echo $email['um-email'];
echo $ccode;
}
}
$db->disconnect();
}
以下是连接类页面的代码:
class database
{
protected $_link, $_result, $_numRows, $_content;
public function __construct($server, $username, $password, $db)
{
$this->_link = mysqli_connect($server, $username, $password, $db);
mysqli_select_db($this->_link, $db);
}
public function disconnect()
{
mysqli_close($this->_link);
}
public function query($sql)
{
$this->_result = mysqli_query($this->_link, $sql);
echo $sql;
$this->_numRows = mysqli_num_rows($this->_result);
}
public function content()
{
return $this->_content;
}
public function display_content()
{
$arows = array();
for($x = 0; $x < $this->numRows(); $x++)
{
$arows[] = mysqli_fetch_array($this->_result);
}
echo var_dump($arows);
return $arows;
}
public function numRows()
{
return $this->_numRows;
}
public function rows()
{
$rows = array();
for($x = 0; $x < $this->numRows(); $x++)
{
$rows[] = mysqli_fetch_assoc($this->_result);
}
echo var_dump($rows);
return $rows;
}
}
实际上由于导致问题的原因,DB已经获得了值并返回行数这一事实,我不明白为什么数组为空。
如果上面的代码示例,我试图从第一个代码段获取电子邮件地址:
foreach($db->display_content() as $aemail)
{
echo $aemail['um-email'];
}
最终将分配给会话变量,以便稍后我使用echo来查看它是否有值。目前有一些可以防止SQL注入的位,但我想在添加验证之前使其工作。
从var_dump返回的确切消息是:
array (size=1)
0 =>
array (size=3)
'ID' => string '3' (length=1)
'code' => string '12345' (length=5)
'um_email' => string 'billybob@bobmail.com' (length=20)
对于TL;当存在正确的值时,DR行数为1,mysqli_fetch_array / assoc返回null。
非常感谢我感谢所有的帮助
更新:删除Mark Baker建议的行,现在看来数据现在存储在数组中(查看var_dump)但是我现在收到的是“Undefined offset:0”值。
答案 0 :(得分:0)
一个旧问题并且已经解决了,我重新设计了表单和数据库连接,在处理完这个表单之后我需要使用数组位置而不是字段的名称。