有数据时不从php / mysqli查询中获取结果行/字段

时间:2018-09-27 10:09:57

标签: php mysql

对此我有些困惑。问题的解释是:

  • 在以下位置运行时,查询sql返回6行数据(每行14个字段) phpMyAdmin
  • 在php页面上,mysqli_num_rows返回:6
  • print_r($ sql_res)返回:mysqli_result对象([current_field] => 0 [field_count] => 14 [lengths] => [num_rows] => 6 [type] => 0)
  • var_dump($ sql_res)返回:object(mysqli_result)#1(5){[“” current_field“] => int(0)[” field_count“] => int(14)[” lengths“] => NULL [“ num_rows”] => int(6)[“ type”] => int(0)

db中有数据,但是由于没有返回包含字段值的数据,因此没有被解析为表结构。任何帮助或指针将不胜感激。 数据库连接正常,我的其他页面都在工作,我在查询中使用会话变量($ selected和$ selfair),令人头痛的php代码是:

public createConnection() {
   const options: any = {
   transport: 0,
   accessTokenFactory: () => 'my token'
   };
   this._hubConnection = new HubConnectionBuilder()
  .withUrl('http://localhost:5000/chathub', options )
  .build();
}

谢谢。

阿尔卑斯

3 个答案:

答案 0 :(得分:1)

您有错字:

while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{

应该是

while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC)){

答案 1 :(得分:1)

感谢所有人(@ kerbholz,@ Raymond Nijland,@ verhie,@ dela和@Rup)几乎立即提供了帮助。感谢您的指导和建议。不幸的是,由于给出了答案,我不知道如何关闭这篇文章。 !

答案 2 :(得分:0)

您必须确保要比较的值周围有一个单引号(')。 例如

SELECT * FROM table WHERE column_name = 'value';

可以,但是

SELECT * FROM table WHERE column_name = value;

不起作用。

因此请确保您的输出是:

SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, har_docno, 
har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, har_schid 
FROM hareketler WHERE har_co_id ='selected' AND har_fair_id ='selfair';

要实现此目的,请将您的sql更改为

$sql = "SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, 
har_docno, har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, 
har_schid FROM hareketler WHERE har_co_id ='". $selected."' AND har_fair_id ='". 
$selfair."';";

这应该可以解决您的问题,并且while循环中的分号放错了位置。 while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{。你需要解决 谢谢,希望对您有所帮助。