2015-09-03 76 views
1

我在php中有一個錯誤,我不知道如何解決這個問題。順便說一句,這是我的學校課例,所以我不知道那裏發生了什麼。這被認爲是主/細節導航。類型定義字符串不匹配綁定數

<?php 

$mysqli = new mysqli("localhost", "root", "", "base"); 

$stmt = $mysqli->prepare('SELECT * FROM aeromiting WHERE id = ":id"'); 
echo $mysqli->error; 
$stmt->bind_param(':id', $_GET['id']); 
var_dump($stmt); 

$data = $stmt->execute(); 

?> 

警告:mysqli_stmt :: bind_param():元素在 類型定義串數中不 C匹配綁定變量的數目:\ XAMPP \ htdocs中\ TEST1 \上線detail.php (0)[「num_rows」] => int(0)[「param_count」] 20對象(mysqli_stmt)#2(10) {[「affected_rows」] => int(0)[「insert_id」] => int ] => int(0)[「field_count」] => int(4)[「errno」] => int(0)[「error」] => string(0)「」[「error_list」] => array(0){} [「sqlstate」] => string(5)「00000」[「id」] => int(1)}

+0

好像你在混合MySQLi和PDO。 – Qirel

+0

bind_param正在查找querystring參數,所以去這個頁面的url應該是類似於index.php的東西?id = 1 – Kuya

+0

@Kuya echo「

  • $row[naziv]
  • 」; – kuki

    回答

    1

    如果你想這樣做的PDO,試試這個...

    <?php 
    $host = 'localhost'; $db = 'base'; $user = 'root'; $pw = ''; 
    $conn = new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8', $user,  $pw); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    
    try { 
        $id = $_GET['id']; 
        $sql = "SELECT * FROM aeromiting WHERE id=:id"; 
        $query = $conn->prepare($sql); 
        $query->bindValue(':id', $id, PDO::PARAM_INT); 
        $query->execute(); 
        $row = $query->fetch(PDO::FETCH_ASSOC); 
        $totalRows = $query->rowCount(); 
    } catch (PDOException $e) { 
    die("Could not get the data: " . $e->getMessage()); 
    } 
    ?> 
    

    看一看pdo_mysql以獲取更多信息。

    +0

    這seeems是更好的解決方案,但看起來像我得到這個錯誤**無法獲取數據:SQLSTATE [HY093]:無效的參數編號:沒有參數被綁定** – kuki

    +0

    匆忙......重新編寫我編輯的答案。 – Kuya

    +0

    給我幾分鐘,這可能工作得很好。 – kuki

    0

    您在這裏混合使用API​​。 MySQLi不能接受字符串或類似的參數。

    $stmt = $mysqli->prepare('SELECT * FROM aeromiting WHERE id = ":id"'); 
    $stmt->bind_param(':id', $_GET['id']); 
    

    應該

    $stmt = $mysqli->prepare('SELECT * FROM aeromiting WHERE id = ?'); 
    $stmt->bind_param('i', $_GET['id']); 
    

    當然,這是假設$_GET['id']是一個整數(因此在bind_param'i'。如果它是一個字符串,更換is

    你應該也可能會得到一個bind_result,所以你實際上將數據庫的結果綁定到了一些變量。請看MySQLi documentation

    +0

    我不知道,我真的很新,我仍然得到同樣的錯誤。但是在什麼情況下我可以使用我的例子?我在問這個問題,因爲這是學校的例子,代碼沒有寫得很好,我認爲我需要使用MySQLi。 – kuki

    +0

    您可以使用MySQLi或PDO,但不能混用它們。您的查詢是基於PDO的,但您使用的是MySQLi-API。 – Qirel

    相關問題