将记录插入MySQL DB

CLi*_*own 1 php mysql

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

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

但是,如果$twittercontent包含'char,我认为它会失败.正确?

如果是这样我怎么能正确处理它?

Jim*_* W. 5

您将需要查看mysql_real_escape_string.但是,我会考虑使用mysqliPDO类来使用预处理语句.

编辑

注意,这些都可以在准备语句的示例下从PHP手册中找到.

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();
}
?>
Run Code Online (Sandbox Code Playgroud)

用法示例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));
?>
Run Code Online (Sandbox Code Playgroud)

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) . "', '')";
Run Code Online (Sandbox Code Playgroud)

您可以在上面列出的手册页中找到更多信息和额外用法示例.鉴于我知道什么$dp是我不能完全定制.

边注

这是我愿意做的所有假设.OP可以从POST和/或以数组形式获取数据,或者他可以从不同的方式获取数据.或者,或者,根据OP发布的示例,这与我可以定制到OP一样准确.如果您遇到问题或认为可以更好地解释/显示,那么请继续添加另一个解决问题的答案,而不仅仅是另一个抱怨评论评论当您不愿意"正确"时,没有人做任何事情. "回答你自己.

当然,如果它是一个数组,这会改变很多项目,OP应该清除它,而不仅仅是随机的人在猜测数据的位置和方式时"猜测".