সিঙ্ক আউট কমান্ড; আপনি এখন এই আদেশ চালাতে পারবেন না


94

আমি আমার পিএইচপি কোডটি কার্যকর করার চেষ্টা করছি, যা মাইএসকিলির মাধ্যমে দুটি মাইএসকিউএল কোয়েরিকে কল করে এবং "কমান্ডগুলি সিঙ্কের বাইরে আউট; আপনি এখন এই আদেশটি চালাতে পারবেন না" ত্রুটি পেয়েছি।

আমি যে কোডটি ব্যবহার করছি তা এখানে

<?php
$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error();
    exit;
}
$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
}  else {

print_r($con->error);
}
foreach ($rows as $row) {
    $pk = $row['ARTICLE_NO'];
    echo '<tr>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['USERNAME'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['shortDate'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="deleterec(\'Layer2\', \'' . $pk . '\')">DELETE RECORD</a></td>' . "\n";
    echo '</tr>' . "\n";
}
function getRowsByArticleSearch($searchString, $table, $max) {
    $con = mysqli_connect("localhost", "user", "password", "db");
    $recordsQuery = "SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y' ) AS shortDate FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '%?%' ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s')" . $max;
    if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param("s", $searchString);
        $getRecords->execute();
        $getRecords->bind_result($ARTICLE_NO, $USERNAME, $ACCESSSTARTS, $ARTICLE_NAME, $shortDate);
        while ($getRecords->fetch()) {
            $result = $con->query($recordsQuery);
            $rows = array();
            while($row = $result->fetch_assoc()) {
                $rows[] = $row;
            }
            return $rows;
        }
    }
}

আমি এটি পড়ার চেষ্টা করেছি, তবে আমি কী করব সে সম্পর্কে নিশ্চিত নই। আমি স্টোর ফলাফল এবং ফ্রি ফলাফল সম্পর্কে পড়েছি, তবে এগুলি ব্যবহার করার সময় কোনও তাত্পর্য হয়নি। এই ত্রুটিটি ঠিক কোন পর্যায়ে ঘটছে তা আমি নিশ্চিত নই এবং কেন এটি ঘটছে তা এবং এটি ঠিক করতে কীভাবে তা জানতে চাই।

আমার ডিবাগের বিবৃতি দিয়ে যাচ্ছি, প্রথমটি যদি কাউন্টকিউয়েরির জন্য লুপটি প্রবেশ করা হচ্ছে না, কারণ আমার এসকিএল সিন্টেক্সে ত্রুটির কারণে কাছে রয়েছে '% ? %'। তবে আমি যদি কেবল *একটি লাইক ক্লজের ভিত্তিতে সীমাবদ্ধ করার চেষ্টা করার পরিবর্তে নির্বাচন করি তবে আমি এখনও সিঙ্ক ত্রুটি থেকে কমান্ডটি পাই।

উত্তর:


114

আপনার দুটি যুগপত প্রশ্ন থাকতে পারে না কারণ মাইএসকিলি অফলিত প্রশ্নগুলি ডিফল্টরূপে ব্যবহার করে (প্রস্তুত বিবৃতিগুলির জন্য; এটি ভ্যানিলার বিপরীতে mysql_query)। আপনি হয় প্রথমটিকে একটি অ্যারেতে নিয়ে আসতে পারেন এবং এর মধ্য দিয়ে লুপ করতে পারেন, বা মাইএসকিলি কে জিজ্ঞাসা বাফার করতে (ব্যবহার করে $stmt->store_result()) বলতে পারেন।

বিশদ জন্য এখানে দেখুন ।


4
আমি একমত, মাইসকিলি কিছুটা মস্তিষ্কে ক্ষতিগ্রস্থ। এটা তোলে করেন PDO মাইএসকিউএল চালক যদিও সাথে সঠিক জিনিস করে।

17
আপনি করতে পারেন দুই যুগপত প্রশ্নের আছে - আপনি শুধু চালানোর প্রয়োজন $stmt->store_result();আমি মনে করি আপনার প্রতিক্রিয়া যে আরো স্পষ্ট করা উচিত।
ছায়া

4
আমাকে এই তথ্য খুঁজে বার করতে যুগে যুগে নিয়ে যাওয়া - এটি সহজে কোথায় প্রদর্শিত হয় না। ধন্যবাদ আমি কেবল আমার প্রশ্নগুলি $select_stmt->close();তাদের বিভক্ত করার জন্য পৃথক করে (একযোগে নয় প্রক্রিয়াগত
n34_panda

@ ফলস উপস্থিতি, আপনি বলেছিলেন যে "মাইএসকিলি ডিফল্টরূপে উদাসীন প্রশ্নগুলি ব্যবহার করে"। সুতরাং আমরা অন্যথায় এটি কীভাবে সেট করতে পারি?
পেসারিয়ার

4
আমি জানি যে এটি অদ্ভুত বলে মনে হচ্ছে, তবে mysqli_query একটি বিদেশী কী লঙ্ঘন করে একটি কোয়েরি কার্যকর করার সময় আমার এই ত্রুটি হয়েছিল ... সুতরাং যদি কারওর সাথে এটি ঘটে থাকে তবে ডাবল পরীক্ষা করে দেখুন যে আপনার INSERT ক্যোয়ারী কোনও বিদেশী কী লঙ্ঘন করছে না
লুকাফেরেরিও

35

আমি আমার সি অ্যাপ্লিকেশনটিতে এই সমস্যাটি সমাধান করেছি - আমি এটি কীভাবে করেছি তা এখানে:

  1. মাইএসকিএল ফোরাম থেকে উদ্ধৃতি:

    এই ত্রুটিটির ফলাফল যখন আপনি আপনার ক্যোয়ারীটি অ্যাপ্লিকেশনের অভ্যন্তরে একটি সেমিকোলন ডিলিমিটার দিয়ে শেষ করেন । কমান্ড লাইন থেকে বা ক্যোয়ার ব্রাউজারে এটি প্রয়োগ করার সময় একটি সেমিকোলন ডিলিমিটারের সাথে কোনও ক্যোয়ারী সমাপ্ত করার সময় আপনার অ্যাপ্লিকেশনের কোয়েরি থেকে ডিলিমিটারটি সরিয়ে ফেলুন।

  2. আমার ক্যোয়ারী চালিয়ে যাওয়ার পরে এবং ফলাফলগুলি [সি এপিআই: mysql_store_result()] এর সাথে মোকাবিলা করার পরে, আমি একাধিক এসকিউএল স্টেটমেন্ট কার্যকর করে যেমন দুটি বা আরও বেশি নির্বাচনী বিবৃতি (ফলাফলগুলি মোকাবেলা না করে পিছনে পিছনে) থেকে ঘটে যাওয়া পরবর্তী কোনও সম্ভাব্য বিচারাধীন ফলাফলগুলি নিয়ে পুনরুক্তি করি।

    আসল বিষয়টি হ'ল আমার পদ্ধতিগুলি একাধিক ফলাফল ফেরত দেয় না তবে আমি কার্যকর না হওয়া পর্যন্ত ডাটাবেস জানে না: [সি এপিআই: mysql_next_result()]। আমি লুপে এটি করি (ভাল পরিমাপের জন্য) যতক্ষণ না এটি শূন্যের না ফেরায়। বর্তমান সংযোগ হ্যান্ডলার জানলে অন্য ক্যোয়ারী চালানো ঠিক হয় (সংযোগের ওভারহেড হ্রাস করতে আমি আমার হ্যান্ডলারগুলি ক্যাশে করি)।

    এটি আমি লুপটি ব্যবহার করি:

    for(; mysql_next_result(mysql_handler) == 0;) 
      /* do nothing */;
    

আমি পিএইচপি জানি না তবে আমি নিশ্চিত এটির কিছু মিল রয়েছে।


13
এটা আমার জন্য ছিল। পিএইচপি-তে আমি কেবল যুক্ত করেছি: যখন (mysqli_next_result ($ কন));
জোশ

উত্তরের জন্য ধন্যবাদ যা আমার সমস্যার সমাধান করেছে। আমি ডিলিমিটারটি সরিয়েছি এবং এটি কাজ করে। আমি মুক্ত (আনতে) বা আমার ফলাফলগুলি সঞ্চয় করি নি, তবে একবার অনুসন্ধানের একটি বিবৃতি শেষ করার পরে কার্সারটি বন্ধ করে এবং পুনর্নির্মাণ করলাম।
চেন Xie

@ জোশ, উত্তরাধিকার mysqlসম্প্রসারণে এটি কীভাবে করবেন ?
পেসারিয়ার 11

4
ক্যোয়ারির শেষে সেমিকোলন সরিয়ে ফেলা পাইথন মাইএসকিউএলডিবি ব্যবহার করার সময় "কমান্ডগুলি সিঙ্কের বাইরে চলে গেছে; আপনি এখন এই কমান্ডটি চালাতে পারবেন না") সমস্যাটি স্থির করেছেন।
জিনোম

17

আমার আজ একই সমস্যা ছিল, তবে কেবলমাত্র একটি সঞ্চিত পদ্ধতিতে কাজ করার সময়। এটি কোয়েরিকে একাধিক ক্যোয়ারির মতো আচরণ করে তোলে, সুতরাং অন্য কোয়েরি করার আগে আপনাকে অন্যান্য ফলাফলগুলি "গ্রাস" করতে হবে।

while($this->mysql->more_results()){
    $this->mysql->next_result();
    $this->mysql->use_result();
}

এটি একটি তাত্পর্যপূর্ণ বিষয়: সঞ্চিত পদ্ধতিগুলি এসপি-তে কোড উত্পন্ন করতে পারে এমন কোনও ফলাফলের উপরে এবং তার উপরে একটি ফলাফল সেট করে। আপনাকে এটি পরিচালনা করতে হবে বা এই ত্রুটিটি পেতে হবে: stackoverflow.com/a/2315229/4495850
রিচার্ড

11

আমি এই ফাংশনটি প্রতিবার call mysqli-> কোয়েরি ব্যবহারের আগে কল করে রাখি পাশাপাশি সঞ্চিত পদ্ধতিতে কাজ করে।

function clearStoredResults(){
    global $mysqli;

    do {
         if ($res = $mysqli->store_result()) {
           $res->free();
         }
        } while ($mysqli->more_results() && $mysqli->next_result());        

}

6

একবার আপনি ব্যবহার

stmt->execute();

আপনি পারে এটি বন্ধ এক প্রশ্নের ব্যবহার করতে।

stmt->close();

এই সমস্যাটি আমাকে কয়েক ঘন্টা ধরে শিকার করছিল। আশা করি, এটি আপনার ঠিক হয়ে যাবে।


4
বিবৃতি বন্ধ করার প্রয়োজন নেই। @ স্টলিনবেল্ট্রন উপরের উত্তর হিসাবে, অন্যটি প্রস্তুত করার আগে আমাদের একটি বিবৃতিটির ফলাফল "গ্রাস" করতে হবে। সুতরাং, $stmt1->execute(); $stmt2=$conn->prepare(...)এই ত্রুটিটি দেবে, তবে $stmt1->execute(); $result1=$stmt1->get_result(); $stmt2=$conn->prepare(...)ঠিক কাজ করবে।
জয় দধনিয়া

ভাই এটি আমাকে ধন্যবাদ আপনাকে ধন্যবাদ। চ এবং প্রত্যেকে যারা এটি এবং এটি বলে, আমি প্রথমটি বন্ধ করার আগে দু'বার mysqli_prepare ব্যবহার করেছি। এটা কাজ করে।
অবিনাশ মাঝি

3

আমি কোডআইগনিটার ব্যবহার করি। একটি সার্ভার ঠিক আছে ... এটি সম্ভবত পুরানো ... যাইহোক ব্যবহার করে

$this->db->reconnect();

ঠিক কর.


7
এই সমস্যাটি কীভাবে সম্বোধন করবে?
জেরেমি জে স্টারচার

4
@ নরম্যান, এটি সমস্যার "সমাধান" করে না। এটি কেবল পুরো সংযোগটি ফেলে দিয়ে এবং আবার সংযোগ স্থাপন করে এড়িয়ে চলে । পারফরম্যান্সের দিক থেকে এটি মোটেই বোঝা যায় না।
পেসারিয়ার

1

সমস্যাটি মাইএসকিউএল ক্লায়েন্ট সি লাইব্রেরি, যা বেশিরভাগ মাইএসকিউএল এপিআইগুলি অন্তর্নির্মিত। সমস্যাটি হ'ল সি লাইব্রেরি কোয়েরিগুলির যুগপত মৃত্যুর জন্য সমর্থন করে না, সুতরাং এর উপরে নির্মিত সমস্ত এপিআইগুলিও তা করে না। এমনকি যদি আপনি অসমাপ্ত প্রশ্নগুলি ব্যবহার করেন। এটি অ্যাসিঙ্ক্রোনাস মাইএসকিউএল এপিআই লেখার একটি কারণ। এটি টিসিপি ব্যবহার করে মাইএসকিউএল সার্ভারের সাথে সরাসরি যোগাযোগ করে এবং ওয়্যার-প্রোটোকল একসাথে অনুসন্ধানগুলি সমর্থন করে

আপনার সমাধানটি হয় হয় অ্যালগরিদমটি সংশোধন করা যাতে আপনার দু'জনে একবারে অগ্রগতি হওয়া বা বাফার ক্যোয়ারী ব্যবহার করার জন্য তাদের পরিবর্তন করতে হবে না, যা সম্ভবত সি লাইব্রেরিতে তাদের অস্তিত্বের মূল কারণগুলির মধ্যে একটি (অন্যটি হ'ল এক ধরণের কার্সার সরবরাহ করুন)।


4
আমার একবারে দু'জনেরই অগ্রগতি হওয়ার দরকার নেই, আমি আমার দ্বিতীয় ক্যোয়ারির আগে কাউন্টকিউয়েরি সম্পূর্ণরূপে শেষ করার জন্য খুশি, তবে কীভাবে কাউন্টকিউরিয়াকে অগ্রগতিতে থামানো যায় তা সম্পর্কে আমি নিশ্চিত নই

আপনি কাউন্টকিউয়ারি থেকে কোনও ডেটা উদ্ধার করছেন না, এ কারণেই এটি এখনও 'প্রগতিতে' রয়েছে। হয় সমস্ত সারি পুনরুদ্ধার করুন, বা এটি নির্বাচন করুন (আর্টিকেল_এনও) এ পরিবর্তন করুন এবং সেই সারিটি পান। তারপরে আপনার দ্বিতীয় কোয়েরিটি চলবে।
স্ট্যাটিক্সান

আপনি যখন "অ্যাসিনক্রোনাস মাইএসকিউএল এপিআই" বলছেন, আপনি কোন এপিআইয়ের উল্লেখ করছেন? এছাড়াও, আমি আপনার উপসংহার পাচ্ছি না। এই "সমস্যা" এপিআইকে অ্যাসিনক্রোনাস হওয়ার প্রয়োজন ছাড়াই স্থির করা যেতে পারে।
পেসারিয়ার

4
সত্যিকার অর্থে @ পেসিয়ার বলতে আমি নিশ্চিত না যে আমি কী বোঝাতে চেয়েছি, তা হয়! মাইএসকিউএল কানেক্টিভিটিতে ছয় বছরে অনেক কিছু ঘটেছে তাই আমি যা ভেবেছিলাম তার নাম পরিবর্তন করে এবং / অথবা অন্য কোনও নতুন ড্রাইভারের সাথে যুক্ত করা হয়েছে।
স্ট্যাটিক্সান

1

এই সমস্যাটি সমাধান করার জন্য আপনাকে ফলাফলের ডেটা ব্যবহারের আগে সংরক্ষণ করতে হবে

$numRecords->execute();

$numRecords->store_result();

এখানেই শেষ


1

আরেকটি কারণ: store_result () দুটিবার কল করা যায় না।

উদাহরণস্বরূপ, নিম্নলিখিত কোডে ত্রুটি 5 মুদ্রিত হয়।

<?php

$db = new mysqli("localhost", "something", "something", "something");

$stmt = $db->stmt_init();
if ($stmt->error) printf("Error 1 : %s\n", $stmt->error);

$stmt->prepare("select 1");
if ($stmt->error) printf("Error 2 : %s\n", $stmt->error);

$stmt->execute();
if ($stmt->error) printf("Error 3 : %s\n", $stmt->error);

$stmt->store_result();
if ($stmt->error) printf("Error 4 : %s\n", $stmt->error);

$stmt->store_result();
if ($stmt->error) printf("Error 5 : %s\n", $stmt->error);

(এটি মূল নমুনা কোডের সাথে প্রাসঙ্গিক নাও হতে পারে তবে এই ত্রুটির উত্তর খুঁজতে লোকের পক্ষে এটি প্রাসঙ্গিক হতে পারে))


1

আমার সমস্যাটি এখানেই ছিল !!!

প্যারাম বাইন্ডিংটি "গতিশীল" ছিল তাই আমার কাছে একটি পরিবর্তনশীল ছিল যা বাইন্ড_প্যারামটি ব্যবহার করার জন্য ডেটাগুলির প্যারামগুলি সেট করে । সুতরাং ভেরিয়েবলটি ভুল ছিল তবে "ভুল প্যারাম ডেটা" এর মতো একটি ত্রুটি নিক্ষেপ করার পরিবর্তে এটি "সিঙ্ক অফ আউট ব্লক ব্লাক" বলে দেয় তাই আমি বিভ্রান্ত হয়ে পড়েছিলাম ...


0

আমি মনে করি সমস্যাটি হ'ল আপনি ফাংশনে একটি নতুন সংযোগ তৈরি করছেন, এবং তারপরে এটি শেষ না করে। আপনি কেন বিদ্যমান সংযোগটি পাস করে আবার ব্যবহার করার চেষ্টা করছেন না?

আর একটি সম্ভাবনা হ'ল আপনি লুপ আনতে কিছুক্ষণের মাঝামাঝি থেকে ফিরে আসছেন। আপনি কখনই এই বাহ্যিক আনয়ন সম্পন্ন করেন না।


4
যদি আমি বিশ্বব্যাপী করি (যা খারাপ অভ্যাস তবে আপনার বর্ণনা অনুসারে কাজ করা উচিত) আমার এখনও একই ত্রুটি রয়েছে।

4
আমি মনে করি না যে বিশ্বব্যাপী সংযোগটি খারাপ অনুশীলন
মেথিউ জে

0

আপনি সমস্ত পরামিতি সঠিকভাবে টাইপ করছেন কিনা তা পরীক্ষা করে দেখুন। এটি একই ত্রুটিটি ছুঁড়ে দেয় যদি পরামিতিগুলির পরিমাণ নির্ধারিত হয় এবং তার পরে ফাংশনে পাস করা হয়।


0

এটি মূল প্রশ্নের সাথে সম্পর্কিত নয়, তবে আমারও একই ত্রুটি-বার্তা ছিল এবং গুগলের এই থ্রেডটি প্রথম হিট এবং সমস্যাটি কী তা নির্ধারণ করতে আমার কিছুটা সময় লেগেছিল, তাই এটি অন্যদের জন্য কার্যকর হতে পারে:

আমি মাইসকিলি ব্যবহার করছি না, এখনও মাইএসকিএল_কনেক্ট ব্যবহার করছি আমার কিছু সাধারণ জিজ্ঞাসা ছিল, তবে একটি ক্যোয়ারী একই সংযোগের মধ্যে অন্যান্য সমস্ত কোয়েরিকে ব্যর্থ করে দেয়।

আমি mysql 5.7 এবং php 5.6 ব্যবহার করি আমার কাছে ডেটা-টাইপ "JSON" টাইপ সহ একটি টেবিল ছিল। স্পষ্টতই, আমার পিএইচপি-সংস্করণটি মাইএসকিএল থেকে রিটার্ন মানটি চিনতে পারে নি (পিএইচপি কেবল জেএসএন-ফর্ম্যাট দিয়ে কী করবে তা জানেনি কারণ বিল্ট-ইন মাইএসকিএল-মডিউলটি খুব পুরানো ছিল (অন্তত আমি মনে করি))

আপাতত আমি জেএসওএন-ফিল্ড-প্রকারকে পাঠ্যে পরিবর্তন করেছি (এখন পর্যন্ত আমার কাছে দেশীয় মাইএসকিএল জেএসওএন-কার্যকারিতা প্রয়োজন নেই) এবং সবকিছু ঠিকঠাক কাজ করে


0

আপনি হয় ডেটা আনার জন্য বাফার বা Unbuffered ফলাফল সেট ব্যবহার করেন, তাহলে প্রথম আপনি কেবল সংগৃহীত ডেটা মেমরি থেকে পরিষ্কার করতে হবে, একবার আপনি সংগৃহীত সব তথ্য আছে । আপনি আনীত মেমরিটি সাফ না করা পর্যন্ত আপনি একই সংযোগে অন্য একটি এমওয়াইএসকিউএল প্রক্রিয়া চালিত করতে পারবেন না। আপনার স্ক্রিপ্টের ঠিক নীচে এটি ফাংশন যুক্ত করুন, যাতে এটি সমস্যার সমাধান করবে

$numRecords->close(); or $numRecords->free(); // This clears the referencing memory, and will be ready for the next MYSQL fetch

পিএইচপি ডকুমেন্টেশন থেকে রেফারেন্স


4
আপনার যদি কিছু রেকর্ডের প্রয়োজন না হয় তবে আপনার সেগুলি প্রথম স্থানে বাছাই করা উচিত নয়। কেবল তাদের মুক্ত করার পরিবর্তে এগুলিকে মোটেও নির্বাচন করবেন না। এবং যদি এটি না হয় এবং আপনি নির্বাচিত সমস্ত রেকর্ড আনেন, তবে এ জাতীয় কোনও ত্রুটি থাকবে না এবং পাশাপাশি বন্ধ () বা ফ্রি () কল করার প্রয়োজন নেই। সঞ্চিত প্রক্রিয়া হিসাবে, উপরের
আপনার সাধারণ জ্ঞান

0

আমি ডক্ট্রিন ডিবিএল কোয়েরি বিল্ডার ব্যবহার করে এই ত্রুটিটি ছুঁড়েছি।

আমি কোয়েরি বিল্ডারের সাথে একটি ক্যোয়ারী তৈরি করেছি যা কলাম সাবলেটগুলি ব্যবহার করে, এছাড়াও কোয়েরি বিল্ডারের সাহায্যে তৈরি হয়েছিল। সাবলেটেক্টগুলি কেবলমাত্র এর মাধ্যমে তৈরি হয়েছিল $queryBuilder->getSQL()এবং কার্যকর করা হয়নি। দ্বিতীয় সাবলেটটি তৈরি করার সময় ত্রুটি ঘটেছে। $queryBuilder->execute()ব্যবহারের আগে প্রতিটি সাবলেটকে অস্থায়ীভাবে কার্যকর করে $queryBuilder->getSQL(), সবকিছু কাজ করে। এটি মনে হয় যে সংযোগটি $queryBuilder->connectionপ্রতিটি উপ-বিভাগে নতুন কোয়েরি বিল্ডার উদাহরণ সত্ত্বেও, বর্তমানে প্রস্তুত এসকিউএল কার্যকর করার আগে একটি নতুন এসকিউএল তৈরির জন্য একটি অবৈধ অবস্থায় রয়ে গেছে।

আমার সমাধানটি ছিল কোয়েরি বিল্ডার ছাড়াই সাব-সাবলেটগুলি লিখতে।


0

আমি ওডিবিসি ব্যবহার করছি, এবং এই ফিক্সটি আমার জন্য কাজ করে: ওডিবিসি -> ট্যাব সিস্টেম ডিএসএন -> আমার ডেটা উত্সটি কনফিগার করতে ডাবল ক্লিক করুন -> বিশদ -> ট্যাব কার্সার -> আনচেক করুন [কেবলমাত্র ফরোয়ার্ড কার্সারের ফলাফলকে ক্যাশে করবেন না] - > ওকে ক্লিক করুন


0

আমি প্রায়শই এই ত্রুটিটি আঘাত করি এবং এটি সর্বদা আমি যখন কোনও সঞ্চিত প্রক্রিয়া চালাই যে আমি phpmyadmin বা এসকিউএল ওয়ার্কবেঞ্চে ডিবাগ করছি (আমি পিএসএইচপি-তে mysqli এর সাথে সংযোগ স্থাপন করছি)।

ত্রুটিটির ফলস্বরূপ যে ডিবাগিংয়ের মধ্যে কোডের কৌশলগত পয়েন্টগুলিতে আমাকে নির্বাচন সংক্রান্ত পরিবর্তনগুলি ইত্যাদির বিবরণাদি নির্বাচন করতে জড়িত জড়িত ইত্যাদি ত্রুটির ফলাফল রয়েছে etc. এই ক্লায়েন্টের পরিবেশে একাধিক ফলাফলের সেট তৈরি করে এমন একটি সঞ্চিত প্রক্রিয়া চালানো ভাল তবে এটি উত্পাদন করে " পিএইচপি থেকে কল করা হলে সিঙ্কের বাইরে চলে যাওয়ার নির্দেশ দেয় error সমাধানটি সর্বদা মন্তব্য-আউট বা ডিবাগিং নির্বাচনগুলি সরিয়ে ফেলা হয় যাতে পদ্ধতিটির কেবলমাত্র একটি ফলাফল সেট থাকে।


0

কেবল রেফারেন্সের জন্য আমার এই সমস্যাটি উভয় multi_queryএবং queryএকই কোডে মিশ্রিত হয়েছিল:

$connection->multi_query($query);
...
$connection->query($otherQuery);

যা আমি পড়েছি তার জন্য অপ্রচলিত ফলাফল মুলতুবি ছিল, অতএব উল্লিখিত ত্রুটির কারণে।

আমি লুপের সাহায্যে এর সমস্ত ফলাফল গ্রাস করে সমাধান করেছি multi_query:

$connection->multi_query($query);
while ($connection->next_result()); // <--- solves the problem
...
$connection->query($otherQuery);

আমার ক্ষেত্রে multi_queryযেখানে সন্নিবেশ করানো হয়েছে সেগুলির সমস্ত প্রশ্নের আমার নিজেরাই ফলাফলে আগ্রহী নই।


-1

আমার সমস্যাটি হ'ল আমি প্রথমে প্রস্তুত বিবৃতিটি ব্যবহার করছি এবং তারপরে আমি একই পৃষ্ঠায় মাইএসকিলি ক্যোয়ারী ব্যবহার করছিলাম এবং "কমান্ডগুলি সিঙ্কের বাইরে আউট; আপনি এখন এই আদেশটি চালাতে পারবেন না" ত্রুটি পাচ্ছিলাম। ত্রুটি তখনই হয়েছিল যখন আমি কোডটি ব্যবহার করছিলাম যাতে স্টেটমেন্ট স্টেটমেন্ট ছিল।

আমি যা করেছি তা প্রশ্নটি বন্ধ করে দেওয়া। এবং এটা কাজ করে.

mysqli_stmt_close ($ stmt);

আমার কোড

get_category.php (এখানে প্রস্তুত বিবৃতি ব্যবহার করে)

    <?php


    global $connection;
    $cat_to_delete =    mysqli_real_escape_string($connection, $_GET['get'] );

    $sql = "SELECT category_name FROM categories WHERE category_id = ? ;";


    $stmt = mysqli_stmt_init($connection);

    if (!mysqli_stmt_prepare($stmt, $sql))
        $_SESSION['error'] = "Error at preaparing for deleting query. mysqli_stmt_error($stmt) ." & redirect('../error.php');

    mysqli_stmt_bind_param($stmt, 's', $cat_to_delete);

    if (!mysqli_stmt_execute($stmt))
        $_SESSION['error'] = "ERror at executing delete category ".mysqli_stmt_error($stmt) &
            redirect('../error.php');


    mysqli_stmt_bind_result($stmt, $cat_name);

    if (!mysqli_stmt_fetch($stmt)) {
        mysqli_stmt_error($stmt);
    }



    mysqli_stmt_free_result($stmt);
    mysqli_stmt_close($stmt);

অ্যাডমিন_জেট_শ্রেণী_বিডি.পিপি (এখানে মাইএসকিলি)

        <?php

        if (isset($_GET['get']) && !empty($_GET['get']) )
        {
            include 'intodb/edit_category.php';
        }


        if (check_method('get') && isset($_GET['delete']) )
        {
            require 'intodb/delete_category.php';
        }


        if (check_method('get') && isset($_GET['get']) )
        {
            require 'intodb/get_category.php';
        }


        ?>

        <!--            start: cat body          -->

        <div     class="columns is-mobile is-centered is-vcentered">
            <div class="column is-half">
                <div   class="section has-background-white-ter box ">


                    <div class="has-text-centered column    " >
                        <h4 class="title is-4">Ctegories</h4>
                    </div>

                    <div class="column " >


                        <?php if (check_method('get') && isset($_GET['get'])) {?>
                        <form action="" method="post">
                            <?php } else {?>
                            <form action="intodb/add_category.php" method="post">
                                <?php } ?>

                                <label class="label" for="admin_add_category_bar">Add Category</label>
                                <div class="field is-grouped">

                                    <p class="control is-expanded">

                                        <?php if (check_method('get') && isset($_GET['get'])) {?>

                                            <input id="admin_add_category_bar" name="admin_add_category_bar_edit" class="input" type="text" placeholder="Add Your Category Here" value="<?php echo $cat_name; ?>">

                                            <?php


                                            ?>
                                        <?php } else {?>
                                            <input id="admin_add_category_bar" name="admin_add_category_bar" class="input" type="text" placeholder="Add Your Category Here">

                                        <?php } ?>
                                    </p>
                                    <p class="control">
                                        <input type="submit" name="admin_add_category_submit" class="button is-info my_fucking_hover_right_arrow" value="Add Category">
                                    </p>
                                </div>
                            </form>


                            <div class="">

                                <!--            start: body for all posts inside admin          -->


                                <table class="table is-bordered">
                                    <thead>
                                    <tr>
                                        <th><p>Category Name</p></th>
                                        <th><p>Edit</p></th>
                                        <th><p>Delete</p></th>
                                    </tr>
                                    </thead>

                                    <?php

                                    global $connection;
                                    $sql = "SELECT * FROM categories ;";

                                    $result = mysqli_query($connection, $sql);
                                    if (!$result) {
                                        echo mysqli_error($connection);
                                    }
                                    while($row = mysqli_fetch_assoc($result))
                                    {
                                        ?>
                                        <tbody>
                                        <tr>
                                            <td><p><?php echo $row['category_name']?></p></td>
                                            <td>
                                                <a href="admin_category.php?get=<?php echo $row['category_id']; ?>" class="button is-info my_fucking_hover_right_arrow" >Edit</a>

                                            </td>

                                            <td>
                                                <a href="admin_category.php?delete=<?php echo $row['category_id']; ?>" class="button is-danger my_fucking_hover_right_arrow" >Delete</a>

                                            </td>
                                        </tr>


                                        </tbody>
                                    <?php }?>
                                </table>

                                <!--           end: body for all posts inside admin             -->




                            </div>

                    </div>
                </div>


            </div>

        </div>
        </div>

এমন কিছু যা সবেমাত্র আমার মনকে অতিক্রম করেছে, আমি আবারও বিশ্বব্যাপী সংযোগের মাধ্যমে সংযোগের পরিবর্তনশীল যুক্ত করছি। সুতরাং আমি মনে করি মূলত mysqli_stmt_close (m stmt) দিয়ে স্টেটমেন্ট স্টেটমেন্ট শেষ করার পরে ক্যোয়ারী সিস্টেমের সম্পূর্ণ নতুন সেট শুরু হচ্ছে; এবং আমি অন্তর্ভুক্ত এর মাধ্যমে এই ফাইলগুলি এবং অন্যান্য স্টাফ যুক্ত করছি


get_category.php (এখানে বিবরণী প্রস্তুত ব্যবহার করে) pastebin.com/BiWysdYz admin_get_category_body.php (এখানে mysqli) pastebin.com/Pwm30icm নোট: সমস্ত কোড সীমাবদ্ধতা কারণে পোস্ট করা যাবে না
Mahad আলী

এমন কিছু যা সবেমাত্র আমার মনকে অতিক্রম করেছে, আমি আবারও বিশ্বব্যাপী সংযোগের মাধ্যমে সংযোগের পরিবর্তনশীল যুক্ত করছি। সুতরাং আমি মনে করি মূলত mysqli_stmt_close ($ stmt) দিয়ে স্টেটমেন্ট স্টেটমেন্ট শেষ করার পরে পুরো নতুন ক্যোয়ারী সিস্টেমের সেট শুরু হচ্ছে; এবং আমি অন্তর্ভুক্ত মাধ্যমে এই ফাইলগুলি এবং অন্যান্য স্টাফ যুক্ত করছি।
মাহাদ আলি

-1

এটি একটি পুরানো প্রশ্ন, তবে পোস্ট করা উত্তরগুলির মধ্যে কোনওটিই আমার ক্ষেত্রে কাজ করেনি, আমি দেখতে পেয়েছিলাম যে আমার ক্ষেত্রে আমার সঞ্চিত পদ্ধতিতে একটি টেবিলের উপর আমার নির্বাচন এবং আপডেট ছিল, একই টেবিলটিতে একটি আপডেট ট্রিগার ছিল যা ট্রিগার এবং সংবেদনশীল হয়ে উঠছিল the একটি অসীম লুপ মধ্যে পদ্ধতি। বাগটি পাওয়া গেলে ত্রুটিটি চলে যায়।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.