gpt4 book ai didi

php - 比较具有反斜杠的 php 变量和 mysql 表元素

转载 作者:行者123 更新时间:2023-11-29 03:07:19 25 4
gpt4 key购买 nike

我正在尝试为我本地计算机上的音乐创建一个在线数据库。我的库中已经有了一张包含每首歌曲的表格,我想创建一个不同的表格,其中仅包含歌曲 ID(当我将歌曲添加到主表格时自动递增)作为我的播放列表之一。

据我所知,匹配歌曲的唯一 100% 可认证方法是通过我磁盘上的位置( C:\Users\username\Music\iTunes\iTunes Media\Music\Jonathan Coulton 和 GLaDOS\Portal\128 128 Still Alive Duet.mp3 ) 为例。在我的 PHP 代码中,我将歌曲位置放入一个变量中,如果我相对于我的 MYSql 表中的等效歌曲位置打印它,它们将完全匹配,但是当我尝试使用它运行 select 语句时,它会给我一个错误。据我所知,这是由位置信息中的反斜杠引起的。

这是我正在使用的选择语句,

SELECT id FROM itunes WHERE Location=$locationval

其中 $locationval 是当前歌曲的位置,id 是我主表中自动递增的 id,itunes 是我的主表。

有什么办法解决这个问题吗?作为初学者,反斜杠真的是问题所在吗?

作为引用,这里是导入播放列表的完整代码,它使用 PEAR 的 DB 插件(一个 PHP 扩展)。

<?php

// define table name
define('TABLE_NAME', 'playlist');

// create database connection
require_once('DB.php');
$dsn = 'mysql://username:password@localhost/itunes';
$DB =& DB::connect($dsn);
if (DB::isError($DB)) {
die($DB->getMessage());
}
$DB->setFetchMode(DB_FETCHMODE_ASSOC);

// load text file
$file = file_get_contents('Portal.txt');

// explode on new line
$file = explode("\r", $file);
set_time_limit(0);


// loop through each line in the file
foreach ($file as $key => $value) {

// explode on tab to get column list
$exploded = explode("\t", $value);

// check for first row, which contains column headers
if ($key == 0) {

}
else{

if(count($exploded)>3)
{
$locationval=$exploded[26];
echo $exploded[26];
echo "<br />";
$result = mysql_query("SELECT id FROM itunes WHERE Location=$locationval");
//$result = mysql_query("SELECT * FROM itunes WHERE id=8292");
set_time_limit(0);
$row = mysql_fetch_row($result);
//test statements to see if the query worked
echo "Test: ";
echo $row['id'];
echo $row['Location'];
echo "<br />";

}
}

}
?>

这是从这里的代码修改而来的:http://ericlondon.com/posts/208-exporting-itunes-data-into-mysql-and-creating-sql-to-show-top-rated-albums

如果需要更多信息,请告诉我。

最佳答案

在 mysql 中将其用作字符串文字时需要转义反斜杠,因此只需替换以下行:

$result = mysql_query("SELECT id FROM itunes WHERE Location=$locationval");

对于这个:

$result = mysql_query("SELECT id FROM itunes WHERE Location='". str_replace('\\','\\\\',$locationval) . "'");

那应该做你想做的事。

关于php - 比较具有反斜杠的 php 变量和 mysql 表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com