我無法在一條語句中運行INSERT INTO和SELECT查詢。PHP PDO無法運行查詢INSERT INTO與SELECT
有問題,這個PHP代碼:
$db = connect_db_marketlist();
if($db != null) {
$sql = "INSERT INTO items (user_id, market_table_id, price, info)"
." VALUES ('$id', (SELECT table_id FROM markets WHERE city='$city' AND market='$market'), $price, '$info')";
echo $sql; // !!! DEBUG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
try {
$db->query($sql);
echo "OKAY: ".$db->lastInsertId();
} catch (Exception $e) {
echo "ERROR: ".$e->getMessage();
}
}
而且我得到了錯誤:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'market_table_id' cannot be null
錯誤表示SELECT查詢返回null,但是當我直接在phpMyAdmin運行$ sql語句,這是工作。
這是回聲$ SQL輸出:
INSERT INTO items (user_id, market_table_id, price, info) VALUES ('12345678', (SELECT table_id FROM markets WHERE city='ANKARA' AND market='MİGROS'), 22.33, 'TEST_INFO_MİGROS')
這有什麼錯嗎?也許這是我的數據庫連接:
function connect_db_marketlist() {
$servername = "localhost";
$username = "marketuserdb";
$password = "pass1234";
$conn = null;
try {
$conn = new PDO("mysql:host=$servername;dbname=marketlist", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
return $conn;
}
是否有可能使用PDO運行「INSERT INTO ... SELECT ...」查詢?如果是的話,如果沒有,爲什麼?
P.S:當我輸入任何整數而不是(SELECT ....)查詢時,它正在工作。所以數據庫連接沒有問題。
請問你可以共享echo $ sql的輸出嗎?這可以幫助我們瞭解你的情況。 – tanaydin
是的,您可以在pdo中運行insert ... select ...。你像運行其他sql語句一樣運行它。 – Shadow
PDO在這裏沒有任何關係。 –