यह मेरा कोड है मेरे $sql चर ने क्वेरी नहीं दी कृपया इसके लिए मेरी मदद करें मैं इसे आजमाता हूं लेकिन मैं इसके साथ मेरी मदद नहीं कर सका

<?php 
    $connect = mysqli_connect("localhost", "root", "", "finger");
    $f= "";
    $l= "";
    $sql = "CREATE TRIGGER `ersdmmmmecv` AFTER INSERT ON `event` FOR EACH ROW  SELECT fname,Lname INTO $f,$l  FROM user WHERE id=NEW.id;"
    $result = mysqli_query($connect, $sql);
?>
0
viranga LH 24 पद 2021, 13:23
यदि क्वेरी विफल हो जाती है, तो $result FALSE होगा और आप echo mysqli_error($connect); करके क्यों क्वेरी के विफल होने के बारे में अधिक जानकारी देख सकते हैं। यदि आप इसे जोड़ते हैं, तो त्रुटि संदेश क्या है?
 – 
rickdenhaan
24 पद 2021, 13:30
यह दिखाता है कि ट्रिगर में मूल्य वापस नहीं कर सकता'
 – 
viranga LH
24 पद 2021, 13:33
क्या यह संभव है कि चयन 1 से अधिक पंक्ति लौटा सकता है - यदि ऐसा है तो सीमा का उपयोग करें (वैसे भी सीमा का उपयोग करें)
 – 
P.Salmon
24 पद 2021, 13:40
1
अच्छा, यह सही है। ट्रिगर मान वापस नहीं कर सकते। ट्रिगर का उपयोग डेटा में हेरफेर करने के लिए किया जाता है (अर्थात, कुछ होने पर UPDATE, INSERT या DELETE क्वेरी निष्पादित करें)। ट्रिगर होने पर SELECT क्वेरी चलाने का वास्तव में कोई मतलब नहीं है, क्योंकि उन पंक्तियों को प्राप्त करने के लिए कुछ भी नहीं है।
 – 
rickdenhaan
24 पद 2021, 13:42
1
तुम नहीं कर सकते। यह वह नहीं है जिसके लिए ट्रिगर है। इसके अलावा, PHP और MySQL दो अलग चीजें हैं। SELECT column INTO php_variable कभी काम नहीं करेगा क्योंकि MySQL को PHP वेरिएबल्स के बारे में पता नहीं है।
 – 
rickdenhaan
24 पद 2021, 13:45

1 उत्तर

सबसे बढ़िया उत्तर

आप PHP वैरिएबल को अपडेट करने के लिए MySQL ट्रिगर का उपयोग नहीं कर सकते हैं। यदि आप चाहते हैं कि जब भी आपकी event तालिका में कोई नया रिकॉर्ड डाला जाए, तो $f और $l के मान अपडेट हो जाएं, तो आपको इसे पूरी तरह से PHP में करना होगा।

इन पंक्तियों के साथ कुछ काम करना चाहिए (नोट: मैंने स्वयं इसका परीक्षण नहीं किया है):

$f = "";
$l = "";

$new_id = "id_value";

$insert = $connect->prepare("INSERT INTO `event` (`id`, `column2`, `column3`) VALUES (?, ?, ?)");
$insert->bind_param("sss", $new_id, "value2", "value3");

if ($insert->execute() === FALSE) {
    echo 'Could not insert event: ' . $insert->error;
} else {
    // If `event`.`id` is actually an AUTO_INCREMENT column, and you don't
    // specify it in your INSERT query, use this here:
    // $new_id = $insert->insert_id;

    $select = $connect->prepare("SELECT `fname`, `Lname` FROM `user` WHERE `id` = ?");
    $select->bind_param("s", $new_id);
    $select->execute();

    $select->bind_result($f, $l);
    $success = $select->fetch();
    if ($success !== TRUE) {
        echo 'Could not update $f and $l with new values: '
             . ($select->error ?: 'No user with id: ' . $new_id);
    }
}

यदि आपके कोड में कई स्थान हैं जहां आप events तालिका में डेटा सम्मिलित करते हैं, तो मैं व्यक्तिगत रूप से इसे एक फ़ंक्शन में लपेटूंगा ताकि मुझे इसे हर बार दोहराना न पड़े।

1
rickdenhaan 24 पद 2021, 14:02
इसके लिए धन्यवाद
 – 
viranga LH
24 पद 2021, 17:14