【发布时间】:2017-05-02 15:30:46
【问题描述】:
我已经搜索并尝试了大约 3 个小时的不同解决方案,现在我正在寻找并发布这个问题。
我有以下代码;
<?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 的对象转换为第 10 行 D:\xampp\htdocs\dashboard\inserttrack.php 中的字符串。
这些查询每个都使用一个主键,并且只返回一个结果,这是我稍后的 INSERT 查询所需要的。我看过的大多数以前的问题都建议创建一个循环,但我不知道这对我有什么帮助,因为我只得到一个我想稍后使用并且不需要打印出来的结果。
mysqli_query 和$row = mysqli_fetch_assoc($results); 的使用是我从类似问题中得到的,但它们并没有解决我的问题。
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该使用mysqli 或PDO 准备好的语句和this post 中所述的绑定参数。
-
你从哪里得到
$artIDD? -
感谢您的提醒。一旦我掌握了基础知识,我就会马上解决。
-
$artIDD = mysqli_query($conn, "SELECT artID FROM cd WHERE cdID=$trackcd");