Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP Wyodrębnij kody z TextArea i przekaż do Mysql SELECT IN Query

Najpierw o wzorze:

  • Nie potrzebujesz żadnych grup przechwytywania, po prostu użyj \K aby zrestartować pełne dopasowanie.
  • Użyłbym '[^']*' na pierwszym/pustym składniku w pojedynczym cudzysłowie w ciągu wejściowym na wypadek, gdyby jakiś tekst wypełnił tę pozycję.

O Twoim zapytaniu:

  • To niebezpieczne. Nie wolno bezpośrednio wstawiać danych przesłanych przez użytkownika do zapytania ze względów bezpieczeństwa.
  • Tutaj przygotowane instrukcje z ? używane są symbole zastępcze.
  • Ponieważ liczba symboli zastępczych/parametrów do powiązania jest zmienna, splot call_user_func_array() jest wymagane.
  • Zaimplementowałem również bind_result() aby pomóc w przetwarzaniu zestawu wyników.

Nieprzetestowany kod:

$_POST['newfeatured']="new myProduct('', 'bbc_609'),
new myProduct('', '35857'),";

if(preg_match_all("/new (?:my|featured)Product\('[^']*', '\K[^']*/",$_POST['newfeatured'],$prd_ids)){
    $params=$prd_ids[0];  // the fullstring matches
    $count=count($params);  // number of fullstring matches
    $csph=implode(',',array_fill(0,$count,'?'));  // comma-separated placeholders

    $query="SELECT A.productid, A.name, A.brand, B.code
            FROM product A
            INNER JOIN price B ON A.productid=B.productid
            WHERE A.productid IN ($csph);";

    $stmt=$mysqli->prepare($query);  // for security reasons

    array_unshift($params,str_repeat('s',$count));  // prepend the type values string
    $ref=[];  // add references
    foreach($params as $i=>$v){
        $ref[$i]=&$params[$i];  // pass by reference as required/advised by the manual
    }
    call_user_func_array([$stmt,'bind_param'],$ref);    

    $stmt->execute();
    $stmt->bind_result($id,$name,$brand,$code);
    while($stmt->fetch()){
        echo "Whatever you want to do with the results: $id, $name, $brand, $code\n";
    }
    $stmt->close();
}else{
    echo "bonk";
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać ostatnie pole w bazie danych Mysql za pomocą PHP?

  2. Umieść wyniki zapytania wiersza poleceń mysql w zmiennej skryptu bash

  3. Różnice w wydajności między równymi (=) i IN z jedną wartością dosłowną

  4. Jak uzyskać kolejny alfanumeryczny identyfikator na podstawie istniejącej wartości z MySQL?

  5. Różnica między dwiema datami w MySQL