Mysqli_fetch_array không hoạt động PHP 7

Tôi đã đặt câu hỏi này trên Stack Exchange hoặc ở đâu đó, nhưng không đi đến đâu, vì vậy tôi hy vọng ai đó ở đây có thể hỗ trợ hoặc ít nhất là giúp tôi hiểu thêm một chút về nó

Vì vậy, tôi đang cố gắng cập nhật một số PHP, vốn đã từng hoạt động từ lâu trên các phiên bản PHP cũ hơn, nhưng tôi đang gặp phải nhiều vấn đề. Máy hiện tại tôi đang sử dụng chạy CentOS-7 và đang sử dụng PHP 7. 3. 9

Về cơ bản, tập lệnh đang cố gắng thực hiện một số điều đơn giản bằng cách kết nối với cơ sở dữ liệu và đọc bản ghi, sau đó nhận kết quả từ một mảng

Tôi thực sự không rành về PHP, nhưng đã cố gắng cập nhật những phần mà tôi đã học được không còn được hỗ trợ (đặc biệt là các hàm mysql). Tuy nhiên, mặc dù đã tìm kiếm rất lâu các vấn đề tương tự nhưng dường như tôi không thể đạt được bất kỳ tiến triển nào

Tôi đã thêm mã gỡ lỗi để tôi có thể biết lỗi nằm ở đâu, nhưng tôi thực sự không hiểu (a) tại sao chúng bắt đầu có lỗi hoặc (b) thông báo lỗi hoặc © cách khắc phục chúng

Vì vậy, các thông báo lỗi như sau

Notice: Undefined variable: conn in /var/www/site1/test.php on line 12
PHP Warning:  mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in /var/www/site1/test.php on line 12

Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in /var/www/site1/test.php on line 12
PHP Warning:  mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /var/www/site1/test.php on line 13

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /var/www/site1/test.php on line 13
PHP Notice:  Array to string conversion in /var/www/site1/test.php on line 11

Notice: Array to string conversion in /var/www/site1/test.php on line 11
PHP Notice:  Undefined variable: conn in /var/www/site1/test.php on line 12

trong khi mã tôi đang thử nghiệm trông như thế này

=1))
{
$this_place=readdb($arg);
}
else {exit;}

# .. other not very relevant bits below
?>

Bất kỳ trợ giúp và con trỏ nào đi đúng hướng sẽ được đánh giá rất cao. Thanks

Cảm ơn vi đa trả lơi. Bây giờ tôi đã làm cho nó hoạt động gần như đủ, nhưng vẫn còn một thông báo lỗi mà tôi không hiểu lắm và tôi vẫn chưa tìm ra cách chuyển nó sang sử dụng các câu lệnh đã chuẩn bị sẵn

Để dễ dàng, tôi đã tiếp tục sử dụng liên kết chung, (nhưng đã đổi nó thành “con”), và bây giờ chuyển nó qua từng chức năng tôi sử dụng. Hàm readdb bây giờ trông như thế này và ít nhất tạo ra kết quả

function readdb($arg,$con) {
  $sql     = 'SELECT * FROM countries WHERE id=' . $arg;   # line 14
  $result  = mysqli_query($con,$sql); 
  $myrow   = mysqli_fetch_assoc($result);                  # line 16
  printf ("%s %s %s\n", $myrow["id"], $myrow["country"], $myrow["iscity"]);

  $id      = $myrow["id"];
  $country = $myrow["country"];
  $iscity  = $myrow["iscity"];

  return $country;
}

Các thông báo cảnh báo tôi nhận được vẫn liên quan đến dòng 14 và 16, như được đánh dấu ở trên

PHP Notice:  Array to string conversion in /var/www/site1/test.php on line 14
PHP Warning:  mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in /var/www/site1/test.php on line 16

Ở dòng 14, tất cả những gì tôi đang làm là nối hai chuỗi;
Ở dòng 16, tôi cũng bối rối, vì $result không phải là bool

Nếu ai đó có thể giải thích các thông báo/cảnh báo lỗi hoặc chỉ cho tôi cách nhanh chóng để chuyển đổi sang truy vấn đã chuẩn bị thì điều đó thực sự hữu ích, nhưng trong thời gian chờ đợi, tôi sẽ cố gắng tự mình thử và tìm giải pháp. Cảm ơn vì bài đăng;

Mysqli_fetch_array không hoạt động PHP 7
helius

Ở dòng 16, tôi cũng bối rối, vì $result không phải là bool

$result sẽ là một bool, cụ thể là một bool có giá trị là false, nếu truy vấn của bạn không hoạt động vì một lý do nào đó. Vì bạn không kiểm tra xem nó có hoạt động hay không, nên bạn hiện đang cố gắng sử dụng một giá trị sai thay vì đối tượng kết quả. Bởi vì

=1))
{
$this_place=readdb($arg);
}
else {exit;}

# .. other not very relevant bits below
?>
0 của bạn là một mảng, hoặc ít nhất là PHP nghĩ như vậy, nên nó sẽ không được thêm vào cuối truy vấn, vì vậy truy vấn sẽ không chạy vì nó sẽ có lỗi cú pháp

Mysqli_fetch_array không hoạt động PHP 7
helius

Ở dòng 14, tất cả những gì tôi đang làm là nối hai chuỗi;

Bạn nhận được gì nếu bạn

=1))
{
$this_place=readdb($arg);
}
else {exit;}

# .. other not very relevant bits below
?>
1?

Đối với các báo cáo đã chuẩn bị, hãy cuộn xuống một chút và duyệt qua một số chủ đề - có rất nhiều ví dụ ở đây, một số ví dụ trong vài ngày qua. Tôi sử dụng PDO và nó hơi khác một chút, nếu không thì tôi sẽ nhập một ví dụ nhanh hơn là nhập đoạn này. Nhưng tôi luôn phải tra cứu cú pháp mysqli

Được rồi, tôi đã đạt được một bước tiến nhỏ. Một số vấn đề của tôi liên quan đến thực tế là vì tôi mặc định ID của bản ghi là 1, sau này khi tôi cố đọc bản ghi trước đó thì không có. Ngoài ra, bây giờ tôi đã đặt giá trị mặc định của ID là số nguyên, thay vì chuỗi

Tôi đã đăng khá nhiều đoạn mã đầy đủ bên dưới và bạn sẽ lưu ý rằng nó thực sự đi vào hàm readdb ba lần, do đó có ba lần var_dump

=1))
{
$this_place=readdb($arg,$con);
}
else{exit;}

if ($arg==$max){$n_arg=1;}else{$n_arg=$arg+1;}
if ($arg==1)   {$p_arg=$max;}else{$p_arg=$arg-1;}

$next=readdb($n_arg,$con);      # this tries to get the next record after the current one
$prev=readdb($p_arg,$con);      # this tries to get the previous record before the current one

# a few other print bits below here .. but no other queries
?>

Vì vậy, chạy cái này để lấy var_dump mang lại cái này

PHP Notice:  Array to string conversion in /var/www/site1/test.php on line 35

Debug: Max = Array
int(12)
12 Unites States of America
int(13)
13 USA
int(11)
11 United States

Vì vậy, trong số những thứ khác, $max rõ ràng không phải là một Mảng, nhưng tôi không chắc làm thế nào mà nó lại có vẻ rối rắm như vậy. (hay đúng hơn là tôi thế nào)

Làm cách nào để sử dụng Mysql_fetch_array trong PHP?

Định nghĩa và cách sử dụng . Ghi chú. Tên trường được trả về từ hàm này phân biệt chữ hoa chữ thường. fetches a result row as an associative array, a numeric array, or both. Note: Fieldnames returned from this function are case-sensitive.

Việc sử dụng Mysqli_fetch_array() và Mysqli_fetch_row() trong PHP là gì?

mysqli_fetch_array() là phiên bản mở rộng của hàm mysqli_fetch_row(). Ngoài việc lưu trữ dữ liệu trong chỉ mục số của mảng kết quả, hàm mysqli_fetch_array() cũng có thể lưu trữ dữ liệu trong chỉ mục kết hợp, sử dụng tên trường của tập hợp kết quả làm khóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Làm cách nào để tìm nạp hàng trong PHP?

Tìm nạp hàng hoặc cột từ tập hợp kết quả trong PHP (PDO) .
Để trả về một hàng từ một tập hợp kết quả dưới dạng một mảng hoặc đối tượng, hãy gọi PDOStatement. phương pháp tìm nạp
Để trả về tất cả các hàng từ tập kết quả dưới dạng một mảng các mảng hoặc đối tượng, hãy gọi PDOStatement. phương pháp tìm nạp tất cả

Sự khác biệt giữa Fetch_assoc và Fetch_array là gì?

fetch_array trả về giá trị có lập chỉ mục. Nhưng Fetch_assoc chỉ trả về giá trị . ở đây vị trí mảng 0 chứa 11 tên vị trí này là 'id'. có nghĩa là chỉ trả về giá trị.