2017-05-02 11 views
0

私は約3時間、さまざまなソリューションを試してきましたが、今私はこの質問を洞窟に入れて掲示しています。挿入クエリでmysqli_resultsの文字列を使用するには?

私は以下のコードを持っています。

<?php 
include 'db.php'; 


$trackcd = $_GET['trackCD']; 
$trackTitle = $_GET['trackTITLE']; 
$duration = $_GET['secDuration']; 

$artIDD = mysqli_query($conn, "SELECT artID FROM cd WHERE cdID=$trackcd"); 
$results = mysqli_query($conn, "SELECT artID, artName FROM artist WHERE artID=$artIDD"); 
$row = mysqli_fetch_assoc($results); 

$sql = "INSERT INTO tracks (trackID, artID, artistName, trackCD, trackTITLE, secDuration) VALUES (?, ?, ?, ?, ?, ?)"; 
$stmt = $conn->prepare($sql); 
$stmt->bind_param('iisssi', $trackID, $artIDD, $row["artName"], $trackcd, $trackTitle, $duration); 
$result = $stmt->execute(); 
if(!$result) echo "Failed"; 
//header('Location: tracks.php'); 
?> 

しかし10行目; $results = mysqli_query($conn, "SELECT artID, artName FROM artist WHERE artID=$artIDD");

次のエラーメッセージが表示されます。

キャッチできる致命的なエラー:クラスmysqli_resultのオブジェクトはDに文字列に変換することができませんでした:行の\ xamppの\ htdocsに\ダッシュボードの\ inserttrack.php 10

これらのクエリごとに主キー、およびだけのリターンを使用1つの結果、後でINSERTクエリに必要なものです。私が見た以前の質問のほとんどは、ループを作成することを示唆していますが、後で使用したいと思う結果が1つしかなく、印刷を必要としないので、これがどのように役立つのか分かりません。

mysqli_queryと$ row = mysqli_fetch_assoc($ results)の使用。私が似たような質問から拾ったものですが、私の問題を解決していません。

助けてください。

+0

あなたのコードは[** SQLインジェクション**](HTTPSに対して脆弱です。 org/wiki/SQL_injection)の攻撃を防ぎます。 [** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https://secure.php.net/)を使用してください。 manual/en/pdo.prepared-statements.php)は、[** this post **](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql - インジェクション - イン - php)。 –

+0

'$ artIDD'はどこから取得しますか? –

+0

リマインダーありがとう。私は基本的なことができたらすぐにそれを得るでしょう。 – AmberL0uise

答えて

0

はあなたの2番目のクエリに渡すためにあなたの最初のクエリの結果を取得されていません://en.wikipedia:

$query = mysqli_query($conn, "SELECT artID FROM cd WHERE cdID=$trackcd");//vulnerable 
$art_id_row = mysqli_fetch_assoc($query); 
$art_id = $art_id_row['artID'] 
+0

あなたは天才です。どうもありがとうございます。 – AmberL0uise

関連する問題