我使用以下脚本将记录插入我的数据库:

$sql = "INSERT INTO fotetweets VALUES('$tweetid','$dp', '', '$username','$tag', '$twittercontent', '$twittertimestamp', '')";
mysql_query($sql);

但是,如果$twittercontent包含'字符,我认为它将失败。对的?
如果是这样,我该如何正确处理呢?

最佳答案

您将需要查看mysql_real_escape_string。但是,我将研究如何使用mysqliPDO类,并使用准备好的语句。
编辑
注意,这些都可以在PHP手册的prepared语句示例下找到/获得。
MySQLi的示例用法:

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* create a prepared statement */
$stmt =  $mysqli->stmt_init();
if ($stmt->prepare("INSERT INTO fotetweets VALUES(?, ?, '', ?, ?, ?, ?, '')")) {
    /* bind parameters for markers */
    $stmt->bind_param("issssi", $tweetid, $dp, $username, $tag, $twittercontent, $twittertimestamp);

    /* execute query */
    $stmt->execute();

    /* close statement */
    $stmt->close();
}
?>

示例用法PDO:
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$sth = $dbh->prepare('INSERT INTO fotetweets VALUES(?, ?, '', ?, ?, ?, ?, '')');
$sth->execute(array($tweetid, $dp, $username, $tag, $twittercontent, $twittertimestamp));
?>

mysql_real_escape_string用法示例:
$tweetid = (int) $tweetid; // static cast to integer, if that is what it should be.
$sql = "INSERT INTO fotetweets VALUES(
    $tweetid,'" . mysql_real_escape_string($dp) . "',
    '', '" . mysql_real_escape_string($username) . "',
    '" . mysql_real_escape_string($tag) . "',
    '" . mysql_real_escape_string($twittercontent) . "',
    '" . mysql_real_escape_string($twittertimestamp) . "', '')";

您可以在上面列出的手册页中找到更多信息和额外的使用示例。如果我知道什么是$dp的话,我就不能精确地裁剪它。
旁注
这是我愿意做的所有假设。操作人员可以从POST和/或数组形式获取数据,也可以从不同的方法获取数据。或者,以OP发布的示例为例,这是我为OP量身定做的最准确的方法。如果您有问题或者认为可以更好地解释/展示,好吧,继续写下另一个答案,而不仅仅是另一个抱怨性的评论:当你不愿意自己写下“正确”的答案时,没有人会做任何正确的事情。
当然,如果它是一个数组,这会改变很多项,操作程序应该清除这些项,而不仅仅是随机的人在哪里和如何检索数据进行“猜测”。

关于php - 将记录插入MySQL DB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3763042/

10-10 14:04